MySQL是如何实现事务的隔离级别

时间:2020-05-23 20:53:58   收藏:0   阅读:66

摘要

本文旨在了解MySQL InnoDB引擎如何支持事务的隔离级别。
文章主要内容分两个部分。
第一部分阐述数据库的并发问题以及为之产生的ANSI SQL 标准隔离级别。
第二部分根据 MySQL 官方文档解释 InnoDB 是如何支持这些隔离级别的。

数据库事务的并发问题

ANSI SQL 隔离级别的定义是来源于三个异象问题,ANSI SQL在权衡系统的可靠性和性能之间定义了不同的级别。所以这里先介绍主流的三个并发问题是什么。

读异象 (read phenomena)


标准事务隔离级别

ANSI SQL下规定的隔离级别(1992 - 很老的标准了)

  1. 未提交读 - Read Uncommited
    • 风险挺高,但是如果只是存粹的读操作可以推荐使用(MyISAM也挺香呀)
  2. 已提交读 - Read Commited(互联网主流默认使用的隔离级别)
    • 事务无法看见其他未提交事务的修改
  3. 可重复读 - Repeatable Read (MySQL 默认)
    • 只读事务开始时的快照数据
  4. 可序列化 - Serializable

MySQL是如何支持不同隔离级别的

知识准备(术语解释)


未提交读 - Read Uncommited


已提交读 - Read Commited

特别的对于 R.C 隔离级别有以下变动

关于这个“semi-consistent” read


可重复读 - Repeatable Read


串行化 - Serializable


小结


扩展

参考文献

原文:https://www.cnblogs.com/yousheng/p/12944218.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!