您的位置:首页 > 数据库 > Oracle

用示例比较Oracle的 Read committed 和Serializable 事务隔离等级的区别

2016-01-29 16:21 567 查看
转自:http://www.dataguru.cn/thread-286082-1-1.html

用示例比较Oracle的 Read committed 和Serializable 事务隔离等级的区别,给出SQL演示过程。

Read committed读已提交事务隔离等级:Oracle 默认隔离等级,支持不可重复读和幻读。

Serializable 事务隔离等级:只能看到事务开始时所有提交的改变和自身的改变,不支持不可重复读和幻读,事务开始是什么样子,结果就是什么样子,其他用户影响不了这个事务。

会话A

LEO1@LEO1>create table leo9(xint,yint);                创建表

Table created.

LEO1@LEO1>insert intoleo9values(100,100);             插入一行

1 row created.

LEO1@LEO1>commit;                                提交

Commit complete.

LEO1@LEO1>set transactionisolationlevel serializable;       启动Serializable 事务隔离等级

Transaction set.

LEO1@LEO1>select * from leo9;

       X          Y

---------- ---------------------------

       100      100

会话B,我们用另一个会话不管怎么修改leo9表,都不会影响会话A事务

LEO1@LEO1>insert intoleo9values(200,200);      

1 row created.

LEO1@LEO1>commit;

Commit complete.

LEO1@LEO1>insert intoleo9values(300,300);

1 row created.

LEO1@LEO1>commit;

Commit complete.

会话A,还是一条数据

LEO1@LEO1>select * from leo9;

       X          Y

---------- ---------------------------

       100      100

会话A自己修改的内容在事务中是生效的

LEO1@LEO1>insert intoleo9values(400,400);          我们插入一条记录

1 row created.

LEO1@LEO1>select * fromleo9;                    在本事务中是可以看到的

       X          Y

---------- ----------

      400       400

      100       100

LEO1@LEO1>commit;                            一旦事务结束,Serializable 事务隔离等级就会失效

Commit complete.

会话A,又可以看到所有的记录了

LEO1@LEO1>select * from leo9;

       X          Y

---------- ----------

      400       400

      100       100

      200       200

      300       300

两种事务隔离等级的比较

Read committed                     V.S                     Serializable   Transactions

支持SQL92标准                                             支持SQL92标准

读取物化视图 维护语句级一致性                              维护事务级一致性

事务一致性 支持语句级                                      支持事务级

行级锁 支持                                               支持

读锁定写 不支持                                            不支持

写锁定读 不支持                                            不支持

非行级锁 不支持                                            不支持

行级锁      支持                                                支持

事务锁等待 支持                                            支持
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: