数据库隔离级别

数据库具有不同的隔离级别,不同的隔离级别有不同特性,在使用的时候要小心,特别是在Race Condition的情况下。

  • 读未提交read uncommited。

可以读取到尚未提交的内容,级别最低,会出现脏读。

  • 读已提交read commited

只有已提交的内容会被读取到,会出现幻读,在同一个事务中,开始读取到的数据,和后面相同条件读取到的数据,可能不一样。

  • 可重复读read repeatable

在同一个事务中间,同一个条件读取到的数据,永远是一样的。一般采用快照的办法来实现,在读的事务过程中,其他事务允许继续写,但写入的不影响读取。

  • 序列化读serialable read

看起来事务是序列化的(看起来如此,实际上不一定),就是事务在Race Condition下看起来是串行执行的。

悲观锁

在操作数据的时候先锁定,在竞争比较密集的情况下用。

乐观锁

在操作数据的时候不锁定,采用版本比较等CAS方法写入,写入失败再尝试锁定。

猜你喜欢

转载自www.cnblogs.com/bobdeng/p/8989618.html