| 事务隔离级别 | 实现方式 |
|---|---|
| 未提交读(RU) | 事务对当前被读取的数据不加锁;事务在更新某数据的瞬间,必须先对其加行级共享锁,直到事务结束才释放。 |
| 提交读(RC) | 事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁;事务在更新某数据的瞬间,必须先对其加行级排他锁,直到事务结束才释放。 |
| 可重复读(RR) | 事务在读取某数据的瞬间,必须先对其加行级共享锁(开始读取瞬间),直到事务结束释放;事务在更新某数据的瞬间,必须先对其加行级排他锁,直到事务结束才释放。 |
| 序列化读(S) | 事务在读取数据时,必须先对其加表级共享锁,直到事务结束才释放;事务在更新数据时,必须先对其加表级排他锁,直到事务结束才释放。 |
未提交读:会出现脏读、幻读、不可重复读
提交读:会造成幻读、不可重复读
可重复读:会造成幻读
序列化读:可防止这三者。
行级锁
-
共享锁:又称读锁,即多个事务对于同一个数据可以共享一把锁,都能访问数据,但是只能读不能修改;
-
排他锁:又称写锁,即排他锁不可与其他所共存,一个事务在一行数据上加排他锁,其他事务不能再在其上加其他锁。获取排他锁的事务可以对数据行读取和修改;