MySQL锁

行锁

update 的时候行级锁,如果未 commit,另一个事务会尝试拿锁,超时则报错

表锁

索引失效,行锁会升级为表锁,比如 update 的时候有 or,这样就算在一个事务中 update id = 1 or id = 2,另一个事务要 update id = 3,也会阻塞,一旦发生表锁,并发度是比较低的,所以要避免索引失效

间隙锁

一般发生在范围查询里面,把整个范围加锁,如果要在这个范围内插入新数据,也会阻塞,性能影响也是比较大的

1
show status like 'innodb_row_lock%';

可以看到一些锁相关数据