行锁
update 的时候行级锁,如果未 commit,另一个事务会尝试拿锁,超时则报错
表锁
索引失效,行锁会升级为表锁,比如 update 的时候有 or,这样就算在一个事务中 update id = 1 or id = 2,另一个事务要 update id = 3,也会阻塞,一旦发生表锁,并发度是比较低的,所以要避免索引失效
间隙锁
一般发生在范围查询里面,把整个范围加锁,如果要在这个范围内插入新数据,也会阻塞,性能影响也是比较大的
1 | show status like 'innodb_row_lock%'; |
可以看到一些锁相关数据