间隙锁+临键锁

简介: 【8月更文挑战第1天】

锁住了某一段记录的锁,直观的说就是锁住了一个范围的记录,比如在查询的时候使用了< <= BETWEEN 之类的范围查询条件,就会使用间隙锁

SELECT * FROM your_tab WHERE id BETWEEN 50 AND 100 FOR UPDATE

间隙锁会锁住(50,100)之间的数据,而50和100本身会被记录锁锁住,类似的<=这种查询,也可以认为=的那个值会被记录锁锁住。
如果表里没有50,数据库会一直向左,找到第一个存在的数据,比如40;同理,如果表里没有100,那么数据库就会一直向右,找到第一个存在的数据,比如120。此时,如果有人想要插入一个主键为70的行,是无法插入的,需要等到这个SELECT语句释放掉间隙锁

间隙锁我们一般说两边都是开的,即端点是没有被间隙锁锁住的。记录锁和记录锁是排它的,但是间隙锁和间隙锁不是排它的,也就是说两个间隙锁之间即使重叠了,也还是可以加锁成功的

临键锁是一种很独特的锁,直观上可以看作是一个记录锁和间隙锁的组合,也就是说临键锁不仅仅是会用记录锁锁住命中的记录,也会用间隙锁锁住记录之间的空隙
临键锁和数据库隔离级别的联系最为紧密,可以解决在可重复读隔离级别之下的幻读问题。
间隙锁是左开右开,临键锁是左开右闭 ,如果id只有(1,4,7)三条记录,那么临键锁就把(1,4]锁住。

(幻读就是同一事务里面,同一个sql查询查出来的记录行数不一样。为什么会不一样?因为有别的事务在你执行sql的时候进行了插入,插入到了你的查询条件范围内了,导致你上一次查还好好的,下一次查就莫名奇妙多出来记录了)

目录
相关文章
|
前端开发 JavaScript API
生成订单前端页面整合(1) | 学习笔记
快速学习 生成订单前端页面整合(1)
492 0
生成订单前端页面整合(1) | 学习笔记
|
SQL HIVE
【hive】字符串操作,截取想要的字符串
字符串操作,截取想要的字符串
2401 0
【hive】字符串操作,截取想要的字符串
|
4月前
|
缓存 应用服务中间件 API
Nginx
Nginx:现代互联网的流量调度核心,以事件驱动架构解决高并发难题,集高性能Web服务、反向代理、负载均衡与API网关于一体,助力网站加速与系统稳定,支撑海量用户实时交互,是数字时代不可或缺的基础设施引擎。
滴滴抢单开挂的软件,网约车顺风车抢单加速器脚本插件,autojs开发版
包含主控制、订单检测、界面交互和工具函数四个模块,演示了完整的抢单系统架构。实际使用时需要根据具体
|
10月前
|
云安全 安全 API
“安全体检”测评:安全自动化背后的隐忧与突破
本文围绕阿里云安全检查服务展开,从技术深度、场景适配和安全边界三个维度分析其价值与短板。该服务定位为自动化风险治理工具,涵盖漏洞扫描、合规基线和配置修复。体验中发现,其优势在于云原生体系耦合、资源拓扑感知及成本效益;不足则体现在量化指标缺失和攻击面覆盖有限。改进建议包括优化风险排序、引入AI分析及提供场景化助手。文章总结,该产品在基础风险治理和合规提效上表现良好,但需强化自动化修复与业务场景适配能力,以实现从工具到平台的跃迁。
443 65
|
12月前
|
搜索推荐 数据挖掘 数据安全/隐私保护
视频号小店达人带货系统开发
视频号小店达人带货系统开发是一个综合性的项目,旨在通过视频号平台为商家和达人提供一个高效、便捷的电商带货解决方案。
|
SQL 监控 算法
MySQL锁定:死锁及其避免方法
MySQL锁定:死锁及其避免方法
|
搜索推荐
在 catch 代码块中处理多个异常类型
【10月更文挑战第12天】 在 catch 代码块中处理多个异常类型
380 2
|
JSON 前端开发 数据格式
12306火车票查询--Python可以这么玩!!!
12306火车票查询--Python可以这么玩!!!