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

相关推荐
小马92620 分钟前
智能体时代的两块基石:DeepSeek Harness 开源与“认知基础设施“数据库
数据库·人工智能·开源·agent
那年窗外下的雪.33 分钟前
VXLAN EVPN 分层排障:从 VTEP 可达、ARP/MAC 到 MAC Mobility
服务器·前端·网络·数据库·spine
冰暮流星44 分钟前
mysql练习1
数据库·mysql
三8441 小时前
MySQL 文件读写函数详解:从 CTF 实战到 LOAD_FILE、INTO OUTFILE、LOAD DATA INFILE 应用
数据库·sql
来让爷抱一个2 小时前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
可涵不会debug2 小时前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
_Narcissus_2 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
l1258652 小时前
# RAG多轮对话检索设计:Query重写如何让“那它呢“变成完整问题
前端·数据库·人工智能·python·算法·fastapi·milvus
小弥儿2 小时前
GitHub今日热榜 | 2026-08-20:Agent 上下文数据库接棒
数据库·学习·开源·github
倔强的石头_3 小时前
向量数据库从相似度检索走向融合数据底座
数据库