ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 1. 隔离级别 事务隔离级别共有4个级别。 <br/> **1. READ_UNCOMMITTED(读未提交)** 允许事务A读取事务B未提交的修改。 <br/> **2. READ_COMMITTED(读已提交)** 事务A只能读取事务B已提交的修改。 <br/> **3. REPEATABLE_READ(可重复读)** 确保事务A可以多次从一个字段中读取到相同的值,即事务A执行期间禁止其它事务对这个字段进行更新。 <br/> **4. SERIALIZABLE(串行化)** 确保事务A可以多次从一个表中读取到相同的行,在事务A执行期间,禁止其它事务对这个表进行添加、更新、删除操作。可以避免任何并发问题,但性能十分低下。 <br/> # 2. 不同隔离级别产生的问题 转载自:https://www.cnblogs.com/zs869/p/11673026.html **** :-: ![](https://img.kancloud.cn/0a/17/0a170f6d189a3879e8576f2178d058a7_556x133.png) **脏读(dirty read):** 当一个事务读取另一个事务未提交的修改时,产生脏读。 **不可重复读(nonrepeated read):** 同一查询在同一事务中多次进行,由于其他事务提交所做的修改,导致每次返回的结果不同,此时发生不可重复读。 **幻读(phantom read):** 同一查询在同一事务中多次进行,由于其他事务提交所做的新增或删除操作,导致每次得到的不同的结果集,此时发生幻读。 <br/> 不可重复读侧重于修改,幻读侧重于新增或者删除。解决不可重复读只需要锁住满足条件的行,解决幻读需要锁表。 <br/> # 3. MySQL与Oracle的隔离级别 **1. Oracle的事务隔离级别有两种** ``` READ COMMITTED :读已提交 SERIALIZABLE:串行读取 ``` >[info]Oracle默认隔离级别为:读已提交(READ COMMITTED) **2. MySQL的事务隔离级别有四种** 转载自:https://www.cnblogs.com/zs869/p/11673026.html **** ``` 读未提交 (Read uncommitted) 读已提交 (Read committed) 可重复读 (Repeated read) 可串行化 (Serializable) ``` >[info]MySQL默认隔离级别为:可重复读 (Repeated read)