MySQL行锁的主要知识点

1、innoDB行锁的实现方法

innoDB行锁是通过给索引上的索引项加锁来实现的。

这一点MySQL与Oracle不同,Oracle是通过在数据块中对相应数据行加锁来实现的。

2、行锁的各种注意事项

2-1、只有通过索引项检索数据,InnoDB才使用行级锁,否则,InnoDB将使用锁整张表。

不注意这一点的话,可能导致发生大面积的锁等待,影响系统并发性能。

2-2、如果多条记录的索引值相同,那么这些记录会出现锁冲突
2-3、当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行
2-4、即使使用了索引来加行锁,也有可能演变成表锁

这种情况发生的概率较低,但确实有可能发生。

因为MySQL有自己的查询优化策略,会自行调整SQL的执行计划。一旦MySQL认为全表扫描的效率更高,就会不走索引,那么行锁就变成了表锁。

排查问题的时候需要注意检查这一点。

2-5、使用有索引的相等检索条件检索数据时,如果记录不存在,innoDB将使用间隙锁
发布了33 篇原创文章 · 获赞 19 · 访问量 3137

猜你喜欢

转载自blog.csdn.net/zmflying8177/article/details/104826872