MySQL深入——12

我们今天来谈谈临键锁

next-key lock(临键锁)是记录锁与间隙锁的结合,锁定一个范围。

他被主要应用于解决幻读的问题

临键锁的几个要点:

1.他是前开后闭区间

2.查找过程中访问到的对象会加锁

优化:1.在索引上的等值查询,给唯一索引加锁的时候,next-key lock 会退化为行锁

2.在索引上的等值查询,向右遍历查询且最后一个值不满足等值条件时,next-key lock退化为间隙锁。

bug:唯一索引上的范围查询会访问到不满足条件的第一个值为止。

我们接下来举一些例子来说明,在举例子之前,我要特别说明隔离级别为可重复读,因为在可重复读下间隙锁才是有效的。

而且lock in share mode 和 for update是不一样的,它们的区别在于

Lock in Share Mode是一种共享锁,允许多个事务同时持有对某一行的读锁。这意味着,当一个事务对某行数据加上共享锁之后,其他事务也可以对该数据加共享锁,但不能加排他锁,并且只能进行读操作,不能进行写操作。这种锁适合用于在两张表存在业务关系上的一致性要求时的操作场景。

For Update则是一种排他锁,也称为行锁。当一个事务对数据加上排他锁之后,其他事务不能对该数据加任何的锁,包括共享锁和排他锁。获取排他锁的事务既能读取数据,也能修改数据。这种锁适用于操作同一张表时保证业务的一致性要求。

相关推荐
白帽小丑1 小时前
# 一次 MySQL DELETE 误操作的数据恢复尝试实录
数据库·mysql
Dxy12393102162 小时前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
Quincy_Freak4 小时前
信创内网数据规范实践:银河麒麟下SQLite本地数据安全管理方案
数据库·sqlite·arm·数据库管理·大数据分析·银河麒麟·aarch64
至乐活着5 小时前
MySQL索引底层原理与查询优化实战:从B+树到执行计划
mysql·b+树·查询优化·sql性能·索引原理
2601_962683896 小时前
治理遗留系统中的“生肉 SQL”:一次用多模型协作优化慢查询的实战复盘
数据库·人工智能·sql
酱学编程6 小时前
【从零到一实现一个 AI Agent 框架 · 第四篇】04. 任务规划:拆解复杂目标 -
服务器·网络·数据库·人工智能
shushangyun_7 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
华山令狐虫8 小时前
DBAPI AI 写 SQL:支持动态 SQL 与参数占位符,自然语言一键生成
数据库·人工智能·sql·dbapi
IvorySQL9 小时前
PG 技术日报|2026-07-04
数据库·人工智能·postgresql·开源
Hoxy.R9 小时前
KingbaseES读写分离高可用集群扩容、备库重建与故障切换实战
运维·数据库