8、数据库事务隔离与实现

90 阅读1分钟
事务隔离级别实现方式
未提交读(RU)事务对当前被读取的数据不加锁;事务在更新某数据的瞬间,必须先对其加行级共享锁,直到事务结束才释放。
提交读(RC)事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁;事务在更新某数据的瞬间,必须先对其加行级排他锁,直到事务结束才释放。
可重复读(RR)事务在读取某数据的瞬间,必须先对其加行级共享锁(开始读取瞬间),直到事务结束释放;事务在更新某数据的瞬间,必须先对其加行级排他锁,直到事务结束才释放。
序列化读(S)事务在读取数据时,必须先对其加表级共享锁,直到事务结束才释放;事务在更新数据时,必须先对其加表级排他锁,直到事务结束才释放。

未提交读:会出现脏读、幻读、不可重复读

提交读:会造成幻读、不可重复读

可重复读:会造成幻读

序列化读:可防止这三者。

行级锁

  • 共享锁:又称读锁,即多个事务对于同一个数据可以共享一把锁,都能访问数据,但是只能读不能修改;

  • 排他锁:又称写锁,即排他锁不可与其他所共存,一个事务在一行数据上加排他锁,其他事务不能再在其上加其他锁。获取排他锁的事务可以对数据行读取和修改;