当前位置: 首页 > news >正文

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 的默认引擎之一。

http://www.jsqmd.com/news/183063/

相关文章:

  • Java常见技术分享-27-事务安全-事务日志-事务日志框架
  • 鸿蒙开发语言ArkTS:全面解析优缺点与未来前景
  • lora监督微调(SFT)
  • Arc 弧——CAD图形对象详解
  • TongWeb集中管理THS简便部署
  • 《代码大全2》观后感(九):团队协作——好代码是“共同创造”的结果
  • C语言数据结构-数组实现栈详解
  • Sonic模型依赖项安装踩坑指南:CUDA版本匹配
  • 使用 WSL 管理 Ubuntu 完整指南
  • nt!WMIInitialize函数分析之WMIAdminDevice和WMIDataDevice设备对象的建立
  • 《创业之路》-788-KPI和OKR的考核机制的比较:如果你需要控结果、保交付、管绩效 → 用好KPI;如果你想激活力、促创新、对齐战略 → 引入OKR
  • 关于图表,对理解IT系统业务流程设计的辅助作用
  • Sonic数字人能否支持竖屏视频?9:16比例适配
  • Sonic数字人用户反馈收集表上线,欢迎填写
  • 对于技术栈的多角度理解
  • 内存对决:rust、go、java、python、nodejs
  • 《创业之路》-789-UML描述软件系统与研发团队的组织系统,要高效运行的相似点与相异点。
  • 上位机知识篇---文件传输
  • 社区疾病预防与健康管理微信小程序的设计与实现
  • Sonic能否用于聋哑人手语转换?跨模态扩展思考
  • 《创业之路》-790-KPI含义与用途,以及从系统论的角度看,个人是系统,团队是系统,产品也是系统,对个人KPI指标、团队KPI指标、产品KPI指标的相似处与不同处
  • Linux命令-ifup命令(激活网络接口)
  • 基于GWO优化Transformer多输入多输出回归预测与改进NSGA III的多目标优化附Matlab代码
  • gin HTTP路由分析
  • 《创业之路》-792-产品有哪些常见的关键技术指标? 个人有哪些关键的绩效指标?企业经验有哪些关键绩效指标? 给出示例
  • Sonic能否处理带噪音的音频输入?抗干扰能力测试
  • Sonic模型License变更预警:关注最新开源协议动态
  • 《代码大全2》观后感(八):测试——代码质量的“最后一道关卡”
  • python装饰器(一)
  • 《创业之路》-794-对于相同的现实问题,中底层管理者关注当下、内部、成本、效率、战术、营收、一次性;高层管理者关注未来、外部、资本、价值、战略、竞争性、持续性。