为保证事务的ACID特性,MySQL设计了四种隔离级别:读未提交、读已提交、可重

唠唠话 2024-08-06 10:39:28

为保证事务的ACID特性,MySQL设计了四种隔离级别:读未提交、读已提交、可重复读、串行化。每种级别的使用场景不一样,其中,可重复读为MySQL的默认级别。 读未提交意思是当前事务读了其他事务未提交的数据,在这种级别下会有脏读、幻读、不可重复读的问题。 读已提交意思是当前事务读了其他事务已提交的数据,在这种级别下也会有脏读、幻读、不可重复读的问题。 可重复读意思是当前事务每次读取的都是本事务中的数据,每次读取的结果都是一致的,所以在此级别下没有脏读、不可重复读的问题,但是有幻读的问题。 串行化也就是对某一资源的操作每一个事务都是串行的,一个接一个的。比如,如果有事务在读某一行数据,那其他事务操作这行数据就要等待这个事务操作完了,才能进行操作。在这种级别下没有脏读、幻读、不可重复读的问题。 MySQL实现这四种隔离级别,靠的是锁机制。根据锁粒度的不同,可分为全局锁、页锁、表锁和行锁。根据锁类型的不同,可分为共享锁和排他锁。根据实现算法的不同可分为记录锁、间隙锁、临建锁。

0 阅读:7
唠唠话

唠唠话

感谢大家的关注