mysql innodb的行锁(5) --next-Key 锁
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,间隙锁 next-key, 是针对范围条件不存在的记录上锁,避免不可重复读和幻象读。 如果是 read committed 的隔离级别,则不存在此问题。所以: 我们在开发中,如果使用 repeatab
千家信息网最后更新 2025年11月16日mysql innodb的行锁(5) --next-Key 锁间隙锁 next-key, 是针对范围条件不存在的记录上锁,避免不可重复读和幻象读。 如果是 read committed 的隔离级别,则不存在此问题。
所以: 我们在开发中,如果使用 repeatable read的隔离级别,要尽量减少针对一定范围记录的更新,不然会严重影响并发插入。
特例: 通过相等的条件,申请一个不存在的记录的锁,也会使用next-key锁,并影响记录的插入。
root@sakila 10:46:49>show variables like '%tx_isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)
会话1:
root@sakila 10:49:04>select * from tab_no_index where id=111 for update;
Empty set (0.00 sec)
会话2: 因为第一个会话加锁的记录不存在,所以对 next-key加锁了,没有范围,等于所有,所以插入不了新的记录了
root@sakila 10:47:43>insert into tab_no_index values(200,'200');
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
root@sakila 10:49:17>rollback;
Query OK, 0 rows affected (0.01 sec)
所以: 我们在开发中,如果使用 repeatable read的隔离级别,要尽量减少针对一定范围记录的更新,不然会严重影响并发插入。
特例: 通过相等的条件,申请一个不存在的记录的锁,也会使用next-key锁,并影响记录的插入。
root@sakila 10:46:49>show variables like '%tx_isolation%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| tx_isolation | REPEATABLE-READ |
+---------------+-----------------+
1 row in set (0.00 sec)
会话1:
root@sakila 10:49:04>select * from tab_no_index where id=111 for update;
Empty set (0.00 sec)
会话2: 因为第一个会话加锁的记录不存在,所以对 next-key加锁了,没有范围,等于所有,所以插入不了新的记录了
root@sakila 10:47:43>insert into tab_no_index values(200,'200');
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
root@sakila 10:49:17>rollback;
Query OK, 0 rows affected (0.01 sec)
范围
条件
级别
影响
隔离
幻象
特例
问题
间隙
开发
更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库找不到项目文件
数据库具有的数据安全性
软件开发外来文件
广州怡博互联网科技有限公司
软件开发跟前端开发哪个难
数据库学生信息查询有地址
服务器后面亮蓝灯
惠尔顿网络安全审计密码
日语语言学数据库
投科技互联网多少起投
软件开发时期的总任务
网络安全百科
网络安全宣传征文1000字左右
定义数据库两位小数点
网络安全和保密工作讲话
光遇服务器怎么用
查询网络技术专业系别编号
数据库desc
县工信局网络安全风险
汉特网络技术
翻译者数据库
山西网络安全委员会
高中毕业学软件开发
数据库系统升级与设计课后答案
敢达ol数据库wiki
公民为什么要维护网络安全
物流软件开发报价单
服务器注册上限
数据库为什么要连接服务器
再jsp中访问数据库