程序笔记   发布时间:2022-07-21  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了mysql隔离级别的实现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_248_0@mysql隔离级别的实现原理
  • 读未提交没有额外隔离实现,简单粗暴

  • 串行化直接上共享锁,效率低,但隔离效果好。

  • 可重复读隔离级别(读已提交)利用@H_191_13@mVCC做版本控制,每个事务都会有当前数据库的快照

    InnoDB 利用了“所有数据都有多个版本”的这个特性,实现了“秒级创建快照”的能力。

    • 在时间线上,每个事务有自己的row trx_id和事务信息,每个事务只能读到本事务快照生成的时间点以前已经生成快照事务提交的版本。

    • 高水位低水位问题:

      在实现上, InnoDB 为每个事务构造了一个数组,用来保存这个事务启动瞬间,当前正在“活跃”的所有事务 ID。

      低水位:数组里面事务 ID 的最小值记。 高水位:当前系统里面已经创建过的事务 ID 的最大值加 1 。 视图数组和高水位,就组成了当前事务的一致性视图(read-view)。

      可以这么理解:
        低水位↓           高水位↓   
      [已提交事务 | 未提交(活跃)事务 | 未开始事务]
      
    • 并发写问题。加行锁

    • 解决幻读。临键锁(行锁+间隙锁)。 MVCC为什么不能解决幻读问题?因为MVCC针对已有行做版本控制,但新插入的数据就不行了。

    • @H_673_55@ @H_673_55@

      大佬总结

      以上是大佬教程为你收集整理的mysql隔离级别的实现全部内容,希望文章能够帮你解决mysql隔离级别的实现所遇到的程序开发问题。

      如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

      本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
      如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。