Chinaunix

标题: 【讨论中】innodb row locks的计算方式问题 [打印本页]

作者: yangward    时间: 2013-04-08 00:21
标题: 【讨论中】innodb row locks的计算方式问题
本帖最后由 cenalulu 于 2013-04-09 09:47 编辑

今晚在观察row locks的时候发现一个问题

root@mysqlslap 12:16:22>set autocommit=0;update t1 set charcol1='2tes2t' ;
Query OK, 0 rows affected (0.01 sec)

Query OK, 5601 rows affected (0.19 sec)
Rows matched: 5601  Changed: 5601  Warnings: 0


观察show engine innodb status\G

---TRANSACTION 50EF6, ACTIVE 25 sec
19 lock struct(s), heap size 3112, 5616 row lock(s), undo log entries 5601
MySQL thread id 30, OS thread handle 0x40975940, query id 40005873 localhost root


发现InnoDB 内部出现了 5616 row lock(s)

why?
作者: RogerZhuo    时间: 2013-04-08 10:55
@yangward
你事务隔离级别应该是RR吧,整个表才5601,undo也是5601, row lock却为5616,呵呵 这个只能通过源码debug才能定位具体的计算方法。
华仔,你把级别切到RC下,应该为是5601 row lock(s).
作者: rucypli    时间: 2013-04-08 15:35
本帖最后由 rucypli 于 2013-04-08 15:36 编辑

更新表可能还需要对一些内部表有一些更新操作




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2