Loading

18.事务的隔离级别

ANSI SQL标准定义的四个隔离级别分别为:

  • READ UNCOMMITTED 读未提交:就是不同事务之间可以对数据是完全相互可见的,事务B可以见到事务A对某张表做的任何操作,在这种隔离性下的安全性非常低。
  • READ COMMITTED 读已提交:事务A只能看到事务B提交后的操作。这种隔离级别下的安全性相比前者好一点。
  • REPEATABLE READ 可重复读:目前MySQL InnoDB默认的事务隔离级别,在MySQL中已经完全具备ACID特性。
  • SERIALIZABLE 串行化:安全级别最大,但性能上会有损失,由于可重复读已经达到3°隔离,所以本地事务一般不用这个隔离级别,串行化的隔离级别主要用于innoDB的分布式事务中。

1.不同事务隔离级别对锁的支持

1)读未提交(脏读):查询数据时不加锁,更新数据也不加锁,正因为这样,其他事务之间才能做到读未提交。

2)读已提交(不可重复读):在读已提交隔离级别下,除了唯一性的约束检查以及外键约束的检查需要Gap Lock(间隙锁),其他情况下InnoDB存储引擎不会使用Gap Lock锁。

3)可重复读:查询数据时,使用Next-key Lock锁避免幻读情况。

4)串行化

posted @ 2021-11-20 12:39  文牧之  阅读(22)  评论(0)    收藏  举报  来源