数据库事务的4大隔离级别

数据库事务的4大隔离级别

数据库事务的4大隔离级别按照从低到高排序为:未提交读、已提交读、可重复读、串行化。

事务隔离级别以及各级别下的并发访问问题:

 


pic-1596534022836.png

 

并不是说事务隔离级别越高越高,虽然事务隔离级别越高越安全,但是这样限制了数据库的并发度。

Oracle数据库的默认事务隔离级别是第二等的已提交读(read commit);而Mysql数据库的默认事务隔离级别是第三等的可重复读(repeatable read)。单从事务隔离级别来看Oracle数据库的并发度比Mysql好,但是Mysql比Oracle更安全。

上述所讲的四个并发访问问题:更新丢失、脏读、不可重复读、幻读的概念如下。

(1)更新丢失:逻辑上已经完成更新的数据,但是由于某些原因实际上并没有完成更新。

 


pic-1596534022837.png

 

(2)脏读:一个事务读取到另一个事务未提交的数据。(未提交的数据也就是脏数据)

 


pic-1596534022838.png

 

(3)不可重复读:一个事务读取到另一个事务已提交的更新数据。(与幻读不同的是:这里的事务是对已有的数据更新)

 


pic-1596534022839.png

 

(4)幻读(虚读):一个事务读取到另一个事务所做的新增或删除数据。

 


pic-1596534022840.png

 

不可重复读和幻读的区别:
    不可重复读是一个事务重复读到另一个事务对已有数据的更新操作结果。
    幻读是一个事务重复读到另一个事务的新增、删除操作结果。
原文地址:https://www.cnblogs.com/xm970829/p/13434714.html