Mysql事务与锁详解


 

 

 

 

脏读:

 

不可重复读:

 

 幻读:

 

 

 锁:

 

 

 

表级别的意向锁为了提高效率,

我们能给一张表成功加上一个表锁的前提是:没有任何一个事务对这张表的某些行加了锁。

如果没有意向表锁:

如果现在要给一个表加上表锁。

如果这张表有一千万行数据,需要全表扫描行,是否有事务锁定了某行。

 

如果一张表不使用索引,那么加一个排他锁会锁定整张表。

会为每一行数据默认创建一个聚集索引,看起来好像锁定了整张表

 

 

 

多我们使用唯一索引锁定了一行数据的时候,此时使用主键索引获取该行的锁时,依然失败。

 在innodb中因为二级索引底层存储的依然是主键索引。

 

 

当我们使用范围查询的时候会加邻键锁 type=range

所命中的行的 左开右闭 和下一个 左开右闭区间

在innodb 推荐使用自增的id作为主键索引,在这种情况下 如果我们要去解决幻读的问题,一定要锁住下一个左开右闭区间      ?????

 

 

 

如果没有命中索引扫描全表锁住整张表

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM