mysql innoDB 行锁
InnoDB在给行添加锁的时候,其实是通过索引来添加锁,如果查询并没有用到索引,就会使用表锁。
测试如下:
report 表 的 ui_config 为非索引字段
1、开启事务,查询 t.ui_config = 'uiconfigTest'
2、开启一个新事务,查询 t.ui_config = 'uiconfigTestxiugai',虽然是不同的行,但是出现了阻塞,说明
SELECT * from report t where t.ui_config = 'uiconfigTest' for update;造成了表锁,需要等待事务提交才会释放锁。
report 表 name 为索引字段,修改不同的行不会进行阻塞等待