加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL InnoDB锁先容及差异SQL语句别离加什么样的锁

发布时间:2019-06-26 02:48:26 所属栏目:编程 来源:java互联网架构
导读:阅读提醒 本文所参考的MySQL文档版本是8.0,做尝试的MySQL版本是8.0.13 本文首要参考了MySQL官方文档 InnoDB锁定和事宜机制 本文还参考了何登成的 MySQL加锁处理赏罚说明、一个最不行思议的MySQL死锁说明 以及阿里云RDS-数据库内核组的 常用SQL语句的MDL加锁源

这里“所扫描的每一个索引记录”是指当扫描执行打算中所行使的索引时,搜刮碰着的每一笔记录。WHERE前提是否解除去某个数据行并没有相关,InnoDB并不记得确切的WHERE前提,InnoDB强硬的只认其扫描的索引范畴(index range) 。

你也许认为InnoDB在配置锁时蛮不讲理,竟然不管WHERE前提解除去的某些行,这不是大大增进了锁的范畴了嘛。不外,等我们相识了MySQL执行SQL时的流程,这就好领略了。MySQL的执行打算只会选择一个索引,行使一个索引来举办扫描,MySQL执行SQL语句的流程是,先由InnoDB引擎执行索引扫描,然后,把功效返回给MySQL处事器,MySQL处事器会再对该索引前提之外的其他查询前提举办求值,从而获得最终功效集,而加锁时只思量InnoDB扫描的索引,由MySQL处事器求值的其他WHERE前提并不思量。虽然,MySQL行使index_merge优化时会同时行使多个索引的,不外,这个时辰配置锁时也并不非凡,同样,对付所用到的每一个索引,InnoDB在所扫描的每一个索引记录上都配置next-key lock。

加的锁一样平常是next-key lock,这种锁住了索引记录自己,还锁住了每一条索引记录前面的间隙,从而阻止其他事宜 向 索引记录前面紧接着的间隙中插入记录。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读