ORACLE事物隔离级别
来源:互联网 发布:网络ip地址冲突 编辑:程序博客网 时间:2024/06/05 14:58
1、Read committed (Default)
Oracle最低的隔离级别是Read committed,它有如下特性:
- 这是ORACLE缺省的事务隔离级别。
- 事务中的每一条语句都遵从语句级的读一致性。
- 保证不会脏读;但可能出现非重复读和幻像。
SQL> delete from test;
1 row deleted.
SQL> commit;
Commit complete.
2) 设置session1的隔离级别为Read committed:
Session1> alter session set isolation_level=read committed;
Session altered.
3) 在session1中插入一条数据(未提交):
Session1> insert into test values(1);
1 row created.
4) 在session1查询:
SQL> select * from test;
ID
----------
1
在session1中可以看到本事务之前插入的数据。
5) 在session2中插入一条数据并提交:
Session2> insert into test values(2);
1 row created.
Session2> commit;
Commit complete.
6) 在session1中查询:
Session1> select * from test;
ID
----------
2
1
在session1中可以看到session2中已提交的数据。
在该隔离级别中,只要其它事务提交(即时其它事务在本事务之后才开始),也能看到其它事务对数据操作的结果,因此它不能阻止非重复读和幻读。
2、Serializable
Oracle的下一个级别不是Repeatable Read,而是Serializable,它又如下特性:
- 简单地说,serializable就是使事务看起来象是一个接着一个地顺序地执行。
- 仅仅能看见在本事务开始前由其它事务提交的更改和在本事务中所做的更改(事务级的一致性)。
- 保证不会出现非重复读和幻像。
- Serializable隔离级别提供了read-only事务所提供的读一致性(事务级的读一致性),同时又允许DML操作。
1) 清空测试表数据:
SQL> delete from test;
2 rows deleted.
SQL> commit;
Commit complete.
2) 设置session1的隔离级别为Serializable:
Session1> alter session set isolation_level=serializable;
Session altered.
3) 在session1中插入数据(未提交):
Session1> insert into test values(1);
1 row created.
4) 在session1中查询:
Session1> select * from test;
ID
----------
1
在session1中可以看到本事务之前插入的数据。
5) 在session2中插入一条数据并提交:
Session2> insert into test values(2);
1 row created.
SQL> commit;
Commit complete.
6) 在session1中查询:
Session1> select * from test;
ID
----------
1
在session1中无法看到session2中插入的数据。
3、Read Only
- 遵从事务级的读一致性,仅仅能看见在本事务开始前由其它事务提交的更改。
- 不允许在本事务中进行DML操作。
- read only是serializable的子集。它们都避免了非重复读和幻像。区别是在read only中是只读;而在serializable中可以进行DML操作。
SQL> delete from test;
1 row deleted.
SQL> commit;
Commit complete.
2) 设置session1的隔离级别为Read Only:
Session1> SET TRANSACTION READ ONLY;
Transaction set.
3) 尝试在session1中插入数据:
Session1> insert into test values(1);
insert into test values(1)
*
ERROR at line 1:
ORA-01456: may not perform. insert/delete/update operation inside a READ ONLY
transaction
插入数据出错。
- ORACLE事物隔离级别
- Oracle 事物隔离级别
- ORACLE事物隔离级别
- Oracle笔记之事物隔离级别
- 事物及事物隔离级别
- 事物隔离级别
- 事物的隔离级别
- 数据库事物隔离级别
- 数据库事物隔离级别
- 事物的隔离级别
- 数据库事物隔离级别
- 数据库事物隔离级别
- 事物隔离级别介绍
- 事物隔离级别
- Hibernate 事物隔离级别
- 数据库事物隔离级别
- 事物隔离级别
- 数据库事物隔离级别
- WIN32学习——定时器消息
- Spring Boot Tomcate配置 (SSL配置)
- 解决oracle表锁死
- 李白买酒的递归求法
- Java实现的二分查找算法
- ORACLE事物隔离级别
- Palindrome Linked List
- [Leetcode] 150. Evaluate Reverse Polish Notation 解题报告
- 第一行代码第二版(郭霖著)笔记之第六章(详解持久化技术)
- BZOJ1585 Earthquake Damage 2 地震伤害
- 【读书笔记】机器学习实战 6.3节 SVM-简化版SMO算法
- 通过java.net.URLConnection发送HTTP请求的方法
- linux route cache相关变迁
- Android AppCompatActivity去掉标题栏,全屏