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)串行化

浙公网安备 33010602011771号