MySQL事务隔离详解 深入解析MySQL事务隔离级别
MySQL事务隔离详解
对于许多网友来说MySQL事务隔离详解的电脑方面的小经验,一起来看看吧!
什么是事务隔离
隔离是什么?看到“隔离”这个字眼,估计大部分人的第一反应就是“WC,阳了”,那么“隔离你”就是为了保证其他人的安全。
MySQL中的事务隔离也是这样的,主要是为了确保在并发事务执行时,各个事务之间能够相互独立、互不干扰地运行,从而保证数据的一致性。
事务的隔离级别
MySQL事务隔离为了满足不同场景,提供了4个事务隔离级别(严格来讲是InnoDB存储引擎支持的),分别是:
- 读未提交(Read Uncommitted)
- 读已提交(Read Committed)
- 可重复读(Repeatable Read)
- 串行化(Serializable)
读未提交
读未提交,很好理解:事务在各自的周期内,可以读取到其他事务未提交的数据。
以下图为例,事务2的两次查询结果分别为18和19,即便事务1没有提交。

这种现象被称为“脏读”。
读已提交
读已提交,很好理解:事务在各自的周期内,每次对同一个sql进行查询都是已经提交的数据。
以下图为例,事务2的两次查询结果分别为18和19,因为在此期间事务1对数据进行了更改。

但是,这种现象被称为“不可重复读”,因为违反了事务的隔离性原则(在一个事务内,数据应该是一致的)
个人认为,在大部分情况下,可以读到已经提交过的数据,就不算是一个问题(MySQL默认的隔离级别也是这个)。
可重复读
可重复读,这样理解:既然有“不可重复读”的现象,那我满足你,让你可以重复读。
即:每个事务在自己的事务周期内,多次对同一个sql进行查询都是相同的数据。
以下图为例,事务2的两次查询结果都一样,即便在此期间事务1对数据进行了更改。

但是,如果在“可重复读”级别下进行了当前读,那么还是会出现像”读已提交“中出现的“不可重复读”的现象,不过这里称之为”幻读“(叫法真多)。
这里说下什么是当前读。
顾名思义,当前读就是
相关阅读
-
中序遍历非递归实现 迭代
跟大家分享中序遍历非递归实现的话题,接下来分享详细内容。 思路: 从根节点开始,一直访问左子树,同时将经过的节点入栈。 当左子树访问完毕(为空)时,弹出栈顶元素,访问该节点
-
深入学习:MySQL中查询重复数据的有效方法
一篇方法教程,与您分享的IT小经验,接下来分享详细内容。 在进行数据库操作时,我们经常需要找出重复的数据。 在MySQL数据库中,有多种方法可以实现这个目标。 本文将向你展示如何在
-
建设网站费用一般多少 电子商务网站建设的费用
正文核心导读:建设网站费用一般多少和电子商务网站建设的费用的方法内容,接下来就是全面介绍。 这个问题可以说是网站建设常见问题最热门的问题,也是客户咨询的最多的问题,这个问
-
Redis的过期策略都有哪些?
今天为网友们详解Redis的过期策略都有哪些的IT知识,相关内容具体如下: 思考:假如redis的key过期之后,会立即删除吗? Redis对数据设置数据的有效时间,数据过期以后,就需要将数据从内存中


