news 2026/1/9 13:19:00

Java常见技术分享-26-事务安全-锁机制-常见的锁实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java常见技术分享-26-事务安全-锁机制-常见的锁实现

行级锁

比如 Mysql 里的 InnoDB 引擎, 当你执行更新语句where id = 1 时, 会只锁定 id=1 这一行数据。 本质上是对索引记录加上排他锁, 当你用主键id=1查询时, 他会在主键索引树上找到这个记录, 然后给这个索引项加上排他锁,通过在索引记录上设置锁标志 这样其他事务如果要修改同一行 不管什么条件, 只要涉及这个索记录 就会被阻塞。我们知道InnoDB的主键索引是B+树结构, 行锁就是加在B+数的叶子节点上的索引项

间隙锁

间隙锁是行级锁的一种(算是变种), 它锁定的是索引记录之间的间隙, 他会阻止索引记录之间的插入, 重点来了, 不管是修改进来的(比如 锁住的是id 在2~5之间的 , 那么将id = 1 修改成 id = 3 进入 2 ~5 区间 也会被阻止) 或者是 直接被插入进来的 (插入一个id = 4 的),用来防止幻读。
而且 它锁住的 不是一个个大的区间, 而是根据 已经存在的索引记录, 分成一个个小的区间锁。

表级锁

给整个数据库表上了把排他锁, 锁是直接加在表的元数据(描述表的结构的数据, 就像表的说明书)上的, 会加上一个标志。

共享锁 和 排他锁 的使用以及实现

在兼容性上, 针对 一行数据 可以加多个共享锁, 但是只能加一个排他锁 ,同时 排他锁 和 共享锁 不可加在同一行数据。 一行数据 已经加了共享锁, 也不能加排他锁,得等共享锁释放
在实现上, 都差不多, 在索引记录或者表的员数据上设置锁标志。

补充

MyISAM存储引擎 只有 表级锁 , 排他锁和共享锁。 没有行级锁和间隙锁。 并发性能差。 InnoDB引擎啥都有, 这也是为什么InnoDB 现在成功MySQL 的默认引擎之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/2 18:43:00

Sonic数字人用户反馈收集表上线,欢迎填写

Sonic数字人用户反馈收集表上线,欢迎填写 在内容创作的门槛被AI不断击穿的今天,一个普通人是否也能拥有一位24小时在线、表情自然、口型精准的“数字分身”?答案正在变得越来越肯定。随着生成式AI技术的深入发展,数字人已不再是影…

作者头像 李华
网站建设 2026/1/2 18:40:06

Sonic能否支持VR头显输出?沉浸式交互初步探索

Sonic能否支持VR头显输出?沉浸式交互初步探索 在虚拟现实内容创作的前沿,一个看似简单却极具挑战性的问题正在浮现:我们能否让一张静态照片“活”起来,并让它自然地出现在VR世界中,与用户面对面交流?这不仅…

作者头像 李华
网站建设 2026/1/7 21:43:13

强烈安利10个AI论文平台,MBA论文写作必备!

强烈安利10个AI论文平台,MBA论文写作必备! AI 工具如何让论文写作更高效 在当今快节奏的学术环境中,MBA 学生和研究人员正面临着越来越高的论文写作压力。从选题到定稿,每一个环节都可能成为阻碍进度的瓶颈。而 AI 工具的出现&…

作者头像 李华
网站建设 2026/1/8 22:57:11

FPGA实现MIL - STD1553B协议源码解析:通用且强大的通信利器

fpga MIL-STD1553B源码,支持BC ,BM,RT。 可任意移植到xilinx,altera,actel全系列型号!功能和接口可参考actel芯片1553b核,纯源码!在FPGA开发领域,MIL - STD1553B协议的实现一直是个热门话题。今…

作者头像 李华
网站建设 2026/1/2 18:34:28

桥梁监测系统稳定性测试:核心指标与异常场景验证指南

‌桥梁监测系统稳定性测试指南‌ ‌一、测试目标与特性分析‌ ‌1.1 系统稳定性定义 - &zwnj;**核心指标**&zwnj;&#xff1a;误报率&#xff08;<0.1%&#xff09;&#xff5c;漏报率&#xff08;<0.05%&#xff09;&#xff5c;连续无故障运行时长&#xff…

作者头像 李华