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

相关推荐
Elastic 中国社区官方博客11 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云11 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba11 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭12 小时前
达梦事物特性及MVCC
linux·运维·数据库
小马同学-12 小时前
MySQL主从复制和读写分离
数据库·mysql
谢亮_vipxieliang12 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
海绵宝宝转agent12 小时前
MySql高频面试八股开源笔记总结
mysql·面试·开源
geovindu13 小时前
sql: JSON and XML Data Handling in SQL using sql server 2025
大数据·数据库·sqlserver·数据库开发·数据库架构
IT大白鼠13 小时前
图数据库系列 · 第 02 篇——架构拆解:原生图存储到因果集群
数据库·架构·nosql
余槐i14 小时前
数据没回滚也不报错:@Transactional 自调用失效的 3 种复现与修复
spring boot·mysql·多线程·spring 事务