事务的隔离级别与Oracle对事务的支持操作

事务隔离级别

一、脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。在Oracle中没有脏读的问题。

 

二、不可重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时产生不可重复读。

 

三、幻读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读。

 

不可重复读与幻读的区别:

1、不可重复读指的是对于“同一条”数据的查询操作 a ->b
   幻读对于“多条数据”的查询操作,数据量数: 20条 -> 18条
2、不可重复读:update
   幻读:insert或delete

 

四种隔离级别的程度逐次递进,解决并发效果越来越稳定,但是性能越来越低。

 

ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而以,不同的数据库在实现时有所不同)。

隔离级别

脏读

不可重复读

幻读

读未提交(Read uncommitted)

读已提交(Read committed)

×

可重复读(Repeatable read)

×

×

可串行化(Serializable)

×

×

×

 

 

 

 

 

 

 

 

 

 

 

Oracle的事务隔离级别

oracle提供了sql92标准中的read committed(读已提交)和serializable(可串行化),同时提供了非sql92标准的read-only(读一致性),默认是read committed(读已提交)

 

oracle的事务隔离设置

设置一个事务的隔离级别

set transaction isolation level read committed;(oracle默认的事务隔离级别“读已提交”)

set transaction isolation level serializable;(设置事务隔离级别为“可串行化”)

set transaction read only;(设置事务隔离级别为“读一致性”)

 

参考:oracle中事务处理--事务隔离级别 - 罗小川的博客 - 博客园 (cnblogs.com)

 

posted @ 2021-09-06 00:11  Brack_Pearl  阅读(432)  评论(0编辑  收藏  举报