(1)读未提交(read-uncommitted):X锁-排它锁的引入,保证避免 “丢失修改”的问题,由于读没有加锁,只有写加锁,带来了脏读的问题。
(2)读已提交(read-committed):S锁-共享锁的引入,保证读数据需要加读锁,需要等到写锁释放才能进行,避免了读到未提交的数据的问题,但是由于防止长时间占有读锁不能释放的问题,读锁加锁解锁的时间过短,导致在整个事物周期连续两次读的结果可能不一直,导致不可重复读的问题。
(3)可重复读(repeatable-read): 写数据的时候加上X锁, 直到事务结束, 读数据的时候加S锁, 也是直到事务结束。这能避免“丢失数据”和“脏数据”, “不可重复读”三个问题 , 这是数据库常用的隔离级别
(4)串行(serializable):解决幻读(插入行)