IT袋

当前位置:主页 > 经验教程 > 建站编程 >

MySQL事务隔离详解

MySQL事务隔离详解 深入解析MySQL事务隔离级别

时间:2024-03-12 21:00:27 来源:IT袋 作者:马勇
导读:MySQL事务隔离详解,对于许多网友来说MySQL事务隔离详解的电脑方面的小经验,一起来看看吧! 什么是事务隔离 隔离是什么?看到“隔离”这个字眼,估计大部分人的第一反应就是“WC,阳了

MySQL事务隔离详解

对于许多网友来说MySQL事务隔离详解的电脑方面的小经验,一起来看看吧!

什么是事务隔离

隔离是什么?看到“隔离”这个字眼,估计大部分人的第一反应就是“WC,阳了”,那么“隔离你”就是为了保证其他人的安全。

MySQL中的事务隔离也是这样的,主要是为了确保在并发事务执行时,各个事务之间能够相互独立、互不干扰地运行,从而保证数据的一致性。

事务的隔离级别

MySQL事务隔离为了满足不同场景,提供了4个事务隔离级别(严格来讲是InnoDB存储引擎支持的),分别是:

  • 读未提交(Read Uncommitted)
  • 读已提交(Read Committed)
  • 可重复读(Repeatable Read)
  • 串行化(Serializable)

读未提交

读未提交,很好理解:事务在各自的周期内,可以读取到其他事务未提交的数据。

以下图为例,事务2的两次查询结果分别为18和19,即便事务1没有提交。

MySQL事务隔离详解

这种现象被称为“脏读”。

读已提交

读已提交,很好理解:事务在各自的周期内,每次对同一个sql进行查询都是已经提交的数据。

以下图为例,事务2的两次查询结果分别为18和19,因为在此期间事务1对数据进行了更改。

MySQL事务隔离详解

但是,这种现象被称为“不可重复读”,因为违反了事务的隔离性原则(在一个事务内,数据应该是一致的)

个人认为,在大部分情况下,可以读到已经提交过的数据,就不算是一个问题(MySQL默认的隔离级别也是这个)。

可重复读

可重复读,这样理解:既然有“不可重复读”的现象,那我满足你,让你可以重复读。

即:每个事务在自己的事务周期内,多次对同一个sql进行查询都是相同的数据。

以下图为例,事务2的两次查询结果都一样,即便在此期间事务1对数据进行了更改。

MySQL事务隔离详解

但是,如果在“可重复读”级别下进行了当前读,那么还是会出现像”读已提交“中出现的“不可重复读”的现象,不过这里称之为”幻读“(叫法真多)。

这里说下什么是当前读。

顾名思义,当前读就是

相关阅读

  • 中序遍历非递归实现 迭代

    中序遍历非递归实现 迭代

    跟大家分享中序遍历非递归实现的话题,接下来分享详细内容。 思路: 从根节点开始,一直访问左子树,同时将经过的节点入栈。 当左子树访问完毕(为空)时,弹出栈顶元素,访问该节点

  • 深入学习:MySQL中查询重复数据的有效方法

    深入学习:MySQL中查询重复数据的有效方法

    一篇方法教程,与您分享的IT小经验,接下来分享详细内容。 在进行数据库操作时,我们经常需要找出重复的数据。 在MySQL数据库中,有多种方法可以实现这个目标。 本文将向你展示如何在

  • 建设网站费用一般多少 电子商务网站建设的费用

    建设网站费用一般多少 电子商务网站建设的费用

    正文核心导读:建设网站费用一般多少和电子商务网站建设的费用的方法内容,接下来就是全面介绍。 这个问题可以说是网站建设常见问题最热门的问题,也是客户咨询的最多的问题,这个问

  • Redis的过期策略都有哪些?

    Redis的过期策略都有哪些?

    今天为网友们详解Redis的过期策略都有哪些的IT知识,相关内容具体如下: 思考:假如redis的key过期之后,会立即删除吗? Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中