问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 行锁的类型

发布网友 发布时间:2024-08-19 23:26

我来回答

1个回答

热心网友 时间:2024-08-25 07:30

在MySQL 8.0.29版本的REPEATABLE-READ隔离级别下,行锁的类型有共享锁(S,REC_NOT_GAP和S,GAP)和独占锁(X,REC_NOT_GAP和X,GAP)。独占锁包括插入意向锁(X,INSERT_INTENTION)和X,GAP,INSERT_INTENTION,后者允许与其他插入锁兼容。当在没有索引的列上执行读或更新时,由于全表扫描,会加锁整个表,最终锁定在主键索引上,限制了对已有记录的修改和插入(因为所有主键间隙都被锁定)。

对于没有索引的id列,执行`for update`操作会锁住所有id小于6的记录,形成(-oo,3]和(3,6)的区间。如果试图在这些区间之外的id=6进行更新,会遇到阻塞。同时,由于间隙锁不会相互阻塞,id=2的查询可以执行,而id=5的插入则会因为防止幻读而被阻塞。

在`id=6`的情况下,`for update`操作会锁定(6,9]和(9,+oo)的区间,使得id>6的更新被阻塞。如果查询id=4或id=5,由于这些记录不存在,不会影响锁定范围。

对于name列的查询,如果name='n6',可以执行,因为间隙锁兼容。然而,当查询name='n3'时,由于name索引的临建锁冲突,操作无法执行。

在二级索引(非唯一索引)上,锁定行为更为复杂。比如,对于name='n6',即使索引范围包含n6,只会加临建锁;而对于name='n3',由于索引记录不存在,会在对应区间加间隙锁,但不会锁定主键。

总结来说,MySQL在可重复读模式下,行锁的使用取决于隔离级别、索引的存在以及查询条件,通常以临键锁或间隙锁的形式存在,不会加行锁到不存在的记录。理解这些锁的类型和行为对于优化查询性能和避免并发问题至关重要。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在五粮液000858可以买进么? 2021年五粮液(000858)总资产、总负债、营业收入、营业成本及净利润统... 手机耗电太快了怎么解决 教你方法,轻松解决 Tag模块数组indexOf,splice的使用方法 JavaScript indexOf简介 对于一个JS对象数组怎么使用IndexOf方法得到索引呢? Array.indexOf() 学习 狼来了是什么效应 当两种刺激都出现,认知者会产生首因效应还是近因效应呢? 大过年的…… 店铺摆什么树最旺财 MySQL系列(六)— MySQL锁精讲 店铺内什么树最旺财 蔻驰怎么成为会员 【面试题】细说mysql中的各种锁 MySQL中的锁 MySQL的多种锁策略详解mysql不同的锁策略 丹参泡水喝的功效与作用 丹参可以泡水喝吗丹参是否可以泡水喝 为什么美元汇率增长,出口企业压力大 26个英文字母音标字母读 cad为什么选不中图框? 两匹空调用两.5平方的铜芯线可以吗? 有什么可以免费看电影的软件 CAD布局怎么用简单讲解CAD布局用法和基本操作 看电影电视剧全部免费的软件有哪些 女人梦见被蛇咬手是什么征兆,女人梦见左手被蛇咬出血 怎么看自己在群里发过言吗? 如何查看自己微信公众号以及群发的文章数量 战狼电影哪里能看啊! 店面摆什么树最旺财 MySQL 是如何上锁的 店铺里种什么树最旺运 怎么取消蔻驰会员 店铺摆什么树最旺财聚财 谁有战狼2的百度云??? 怎样才能把衣服上的油渍洗掉 店铺内什么树最旺风水 谁有战狼二给传下 手机怎样查看id帐号 店铺摆什么树最旺运 求战狼2百度云资源,谢谢,不要给我发什么网站或者加微信号。。_百度知... 店铺摆什么树最旺 如何查询自己手机的deviceID 谁有战狼2百度云链接,谢谢 门面摆什么树最旺财风水 战狼2百度网盘战狼2百度云资源链接 壮族三月三的美食作文 工伤申请补正时限 华为P20刚刚发售价格多少