印象中这是在博客里第三次重提数据库事务的隔离级别了。这一块内容有一点绕,当时弄明白了,过一段时间又会忘记。我觉得掌握 数据库事务隔离级别的窍门在于:罗列出事务在并发时会发生哪些异常情况,什么样的隔离级别会杜绝这种异常情况的发生。下面就按照这个思路把 数据库事务隔离级别再复习一遍。
第一种可能出现的异常情况:丢失更新(Lost Update)
数据库事务隔离级别: Read Uncommitted 可以避免此类异常
第二种可能出现的异常情况:脏读(Dirty Read)
数据库事务隔离级别: Read Committed 可以避免此类异常
第三种可能出现的异常情况:不可重复读(Unrepeatable Read )
数据库事务隔离级别: Reaptalble Read 可以避免此类异常
第四种可能出现的异常情况:幻象读(Phantom Read)
数据库事务隔离级别: Serializable 可以避免此类异常
下表是各隔离级别对各种异常的控制能力
LU | DR | NRR | PR | ||
RU | N | Y | Y | Y | |
RC | N | N | Y | Y | |
RR | N | N | N | Y | |
S | N | N | N | N |