楼主: flyabout

关于oracle&DB2的比较

[复制链接]
论坛徽章:
0
21#
发表于 2008-11-19 21:35 | 只看该作者
What are the difference between Statement-level read consistency and Transaction-level
read consistency in ORACLE database?
Do not misunderstand concept!

[ 本帖最后由 eagle3250 于 2008-11-19 21:41 编辑 ]

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
22#
发表于 2008-11-19 21:53 | 只看该作者
楼上说的是,我不该把ORACLE的serializable扯进来,它是设置事务隔离级别的,期待各位高手参与讨论。。。

[ 本帖最后由 sqysl 于 2008-11-20 08:06 编辑 ]

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
23#
发表于 2008-11-20 09:53 | 只看该作者
前面说得有点乱,举个具体的例子吧,以ORACLE SCOTT.EMP为例:
session1:
select empno,ename,sal from emp where empno=7369;
EMPNO ENAME        SAL
----- ---------- -----
7369 SMITH        800

update emp set sal=10000 where empno=7369;
已更新 1 行。

select empno,ename,sal from emp where empno=7369;
得出结果:
EMPNO ENAME         SAL
----- ---------- ------
7369 SMITH       10000
session2:
同时执行:
select empno,ename,sal from emp where empno=7369;
EMPNO ENAME        SAL
----- ---------- -----
7369 SMITH        800

针对同一个人,在同一时刻,工资却出现了两个不同的值,也就是同一时刻针对同一事物的同一属性出现了两个完全不同的值,这不是数据的不一致吗?
而同时,其他数据库系统例如:mssql,做上述试验,session1中更改后再查询,会查出修改后的值:10000,session2却处于阻塞状态,直到session1提交才可以出结果,这就做到了同一时刻针对同一事物的同一属性只有一个值,虽然提交或回滚后session2中也许会出现与session1中查询结果的不同值,但那不是同一时刻的结果,希望大家一起讨论。

[ 本帖最后由 sqysl 于 2008-11-20 09:57 编辑 ]

使用道具 举报

回复
论坛徽章:
18
ITPUB元老
日期:2005-02-28 12:57:002010年世界杯参赛球队:南非
日期:2010-04-19 12:17:452010新春纪念徽章
日期:2010-03-01 11:05:01生肖徽章2007版:牛
日期:2009-11-02 17:04:55祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2008-09-22 19:33:40奥运会纪念徽章:蹦床
日期:2008-09-09 11:00:24奥运会纪念徽章:跳水
日期:2008-06-16 06:59:25ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-08 01:03:42
24#
发表于 2008-11-20 11:50 | 只看该作者
那session1更新的10000是不是一个应该让大家看到的一致的呢?会不会是10001 10002呢?您要是对事物隔离级别有了解,那最低的级别是脏读,这种问题自己去想吧

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
25#
发表于 2008-11-20 17:34 | 只看该作者
不知道你没说明白还是我没理解你的意思,事务的隔离级别我了解,不过,数据库本身就是为了反映现实世界的,在同一时刻同一事物的一个属性给出了用户两个截然不同的结果,这是不符合现实世界的,起码它没正确反映现实世界。
还有,ORACLE似乎并不支持READ UNCOMMITTED,只支持READ COMMITTED 和SERIALIZABLE,而且缺省的是RC级别的隔离,在这两种隔离级别下,都会出现数据这种不一致现象,无论如何,ORACLE在SESSION2里用以前的数据状态替换了目前数据的状态而展现给用户,目前的数据状态就是未知的,不确定的,这就是锁模型的不同。
如果展现给大家的不是10000,而是10001,10002,那可就不是一致性的问题了,那可是对与错的问题了,呵呵。。。
对你上面的论点,我并没完全理解,如果你有时间,还希望能详细讲讲,谢谢。

[ 本帖最后由 sqysl 于 2008-11-20 17:41 编辑 ]

使用道具 举报

回复
论坛徽章:
18
ITPUB元老
日期:2005-02-28 12:57:002010年世界杯参赛球队:南非
日期:2010-04-19 12:17:452010新春纪念徽章
日期:2010-03-01 11:05:01生肖徽章2007版:牛
日期:2009-11-02 17:04:55祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2008-09-22 19:33:40奥运会纪念徽章:蹦床
日期:2008-09-09 11:00:24奥运会纪念徽章:跳水
日期:2008-06-16 06:59:25ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-08 01:03:42
26#
发表于 2008-11-20 18:02 | 只看该作者
session 2的没commit or rollback的是脏读,用户没commit可能10000是不对的,如果对就commit,这才是一致读,oracle做到的就是最小的成本实现的永远一致读,您明白吗,没有任何用户可以读别的用户没有commit or rollback的,所用用户都有唯一一个一致的结果,也就是oracle的机制就是实现一直读,像你自己说的要不就是read commit,要不就是serializable,怎么会有不一致的呢?我没commit,所有别的用户都是读到的800,只有一个session去读那些悬而未决的10000,我感觉您现在说oracle不实现脏读到成了不一致读了

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
27#
发表于 2008-11-20 20:00 | 只看该作者
。。。。。。
谢谢

使用道具 举报

回复
论坛徽章:
78
ITPUB15周年纪念
日期:2020-08-28 17:23:53双鱼座
日期:2016-03-19 19:38:31秀才
日期:2016-02-18 09:31:52秀才
日期:2016-01-25 15:02:04双子座
日期:2016-01-19 20:35:54秀才
日期:2016-01-13 12:14:26秀才
日期:2015-12-25 15:31:10秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:56:09秀才
日期:2015-12-14 14:51:16
28#
发表于 2008-11-21 10:10 | 只看该作者
还是锁定机制问题,MVCC有好处也有坏处,呵呵。

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
29#
发表于 2008-11-21 13:58 | 只看该作者
是啊,大家一时觉得难以接受,慢慢就理解了,呵呵。。。

使用道具 举报

回复
论坛徽章:
16
2011新春纪念徽章
日期:2011-02-18 11:43:36马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11阿斯顿马丁
日期:2014-01-07 16:27:53马自达
日期:2014-01-03 13:13:05现代
日期:2013-12-26 12:46:12本田
日期:2013-11-22 15:17:51红旗
日期:2013-08-29 09:22:13福特
日期:2013-08-06 12:48:402013年新春福章
日期:2013-02-25 14:51:24
30#
发表于 2008-11-21 16:41 | 只看该作者
DB2里其实可以找到很多oracle的东西,比如SGA/PGA的东西,在DB2里都可以找到,但是我觉得它分的太细了,我个人觉得就是有点乱.
DB2锁通过开辟内存来存放锁的状态,在并发性方面不用说也不如oracle

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表