超详细的事务四大特性、隔离级别解读(带SQL语句)
创始人
2025-07-03 18:31:37
0

事务的四大特性 ACID

原子性:事务的所有操作要么全部成功,要么全部失败回滚。

一致性:事务必须是使数据库从一个一致性状态变到另一个一致性状态。

隔离性:一个事务的执行不受其他事务的干扰。

持久性:一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

隔离级别产生问题

脏读:在一个事务处理过程里读取了另一个未提交的事务中的数据(未提交意味着这些数据可能会回滚,可能最终不会存到数据库)。

不可重复读:不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了,读取了前一个事务提交的数据。

幻读:事务在检索期间,其它事务对数据执行了操作,导致前后两次检索的数据不一样。

例如:事务1对一个表中所有数据某个字段值从“Y”修改为“N”的操作,这时事务2又对这个表中插入了一行数据,而这个数据的字段值是为“Y”。事务1如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是事务2中添加的,就好像产生幻觉一样,这就是发生了幻读。

幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

MySQL数据库的四种事务隔离级别(从低到高)

Read Uncommitted(读未提交):所有事务都可以看到其他未提交事务的执行结果。(基本上没用)。

Read Committed(读已提交):一个事务只能看见已经提交事务所做的改变。

Repeatable Read(可重读):确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。(MySQL的默认事务隔离级别)

Serializable(可串行化):通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。

隔离级别

脏读

不可重复读

幻读

读未提交

不能避免

不能避免

不能避免

读已提交

能避免

不能避免

不能避免

可重读

能避免

能避免

不能避免

可串行化

能避免

能避免

能避免

查看mySQL的数据库隔离级别

先看下mysql版本,执行对应sql语句。

-- 查看版本
select version();
-- 旧版本也就是5.x
select @@tx_isolation;
-- 新版本
select @@transaction_isolation;

查询mysql版本

查询mysql的隔离级别

-- 设置read uncommitted级别:
set session transaction isolation level read uncommitted;
-- 设置read committed级别:
set session transaction isolation level read committed;
-- 设置repeatable read级别:
set session transaction isolation level repeatable read;
-- 设置serializable级别:
set session transaction isolation level serializable;

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...