面试官:mysql的四种事务隔离级别
【摘要】
一、事务的四个特性
在介绍mysql的四种隔离级别之前,我们首先要对事务有一个基本的了解。
事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。
(1)原子性。事务是数据库的逻辑工...
一、事务的四个特性
在介绍mysql的四种隔离级别之前,我们首先要对事务有一个基本的了解。
事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。
(1)原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
(3)隔离性。一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
(4)持续性。也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
二、事务的并发问题
我们还需要了解事务在并发情况下,可能会引起哪些问题,这将有助于我们更好地理解mysql的四种事务隔离级别。MySQL之事务隔离级别
(1)脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 MySQL 三万字精华总结 —查询和事务
(2)不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。
小结:其中不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。
三、mysql的四种事务隔离级别
在SQL标准中定义了四种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。mysql事务回滚机制概述
(1)Read Uncommitted(读取未提交内容)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
(2)Read Committed(读取提交内容)
(3)Repeatable Read(可重读)
(4)Serializable(可串行化)
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,因此使用该隔离级别会造成数据库性能的显著下降。MySQL事务中更新多个表数据时,某些表不支持事务会发生什么???
四、总结
mysql的四种事务隔离级别与对应的事务并发问题如下表所示(√ 表示该隔离级别存在的问题,× 表示该隔离级别不存在的问题):
文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/lxw1844912514/article/details/126314009
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)