楼主: rchsh

db block gets 的含义

[复制链接]
论坛徽章:
5
数据库板块每日发贴之星
日期:2005-08-04 01:01:32ITPUB元老
日期:2005-09-14 09:25:53授权会员
日期:2005-10-30 17:05:33会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
11#
发表于 2007-1-16 14:42 | 只看该作者
最初由 rchsh 发布
[B]

谢谢你的指点
但是当前模式和db block gets 有什么关系呢?
测试发现只有delete update ,insert 的时候才有db block gets
而一般select 没有db block gets只有consistent gets 呢 [/B]


只好再写了一遍
current mode是相对于query mode来说的,current mode产生db block gets,一般在DML操作时产生,query mode产生consistent gets(一致性读),一般在查询时产生。

使用道具 举报

回复
论坛徽章:
5
数据库板块每日发贴之星
日期:2005-08-04 01:01:32ITPUB元老
日期:2005-09-14 09:25:53授权会员
日期:2005-10-30 17:05:33会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
12#
发表于 2007-1-16 14:48 | 只看该作者
哥们,这个问题你以前不都问过了吗?怎么今天又拿出来问啊。
http://www.itpub.net/269435,1.html

使用道具 举报

回复
论坛徽章:
26
ITPUB元老
日期:2005-02-28 12:57:00生肖徽章:兔
日期:2006-09-26 21:29:55生肖徽章:兔
日期:2006-09-07 17:01:32生肖徽章:兔
日期:2006-09-07 17:02:25生肖徽章:兔
日期:2006-09-07 17:02:46生肖徽章:兔
日期:2006-09-07 17:06:29生肖徽章:兔
日期:2006-09-18 05:26:00生肖徽章:狗
日期:2006-10-06 13:28:27生肖徽章:狗
日期:2006-10-08 05:28:34生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
13#
 楼主| 发表于 2007-1-16 14:51 | 只看该作者
最初由 freezr 发布
[B]

只好再写了一遍
current mode是相对于query mode来说的,current mode产生db block gets,一般在DML操作时产生,query mode产生consistent gets(一致性读),一般在查询时产生。 [/B]


谢谢
对于consistent gets 比较的理解清楚了,就是说在select 的时候属于查询模式,oracle 的读是属于一致性模式的,也就是说oracle 的读遵从的是从开始读到结束读读到的数据都是同一时间点的。这个我明白

但是对current mode ,它是指当前读到的数据是什么就是什么,为什么在DML(insert,update,delete) 时才会有db block gets 呢?DML 与current mode  ,db block gets 有什么关系呢?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
16
生肖徽章:猴
日期:2006-09-07 17:03:51沸羊羊
日期:2015-03-04 14:43:43比亚迪
日期:2013-08-16 16:21:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:36生肖徽章2007版:虎
日期:2009-03-10 21:13:27生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53
14#
发表于 2007-1-16 14:52 | 只看该作者
consistent gets 是oracle在查询开始的时候,所获得的数据必须是在时间点上一致的。假定查询开始的时候所有数据都是已经提交的,查询开始之后,若数据发生了变化,则查询需要去从回滚段中获得变化前的数据,而若数据没有发生变化,则不用去回滚段中读了。不管是否去回滚段中读,在概念上来讲,这种数据获取方式都叫 consistent gets 。 这仅仅表示一种期望,需要获得一致的时间点的数据,为此可能需要去回滚段中获得数据但并不表示一定从回滚段中的到数据


consistent read  不一定去 undo 里读取

使用道具 举报

回复
论坛徽章:
26
ITPUB元老
日期:2005-02-28 12:57:00生肖徽章:兔
日期:2006-09-26 21:29:55生肖徽章:兔
日期:2006-09-07 17:01:32生肖徽章:兔
日期:2006-09-07 17:02:25生肖徽章:兔
日期:2006-09-07 17:02:46生肖徽章:兔
日期:2006-09-07 17:06:29生肖徽章:兔
日期:2006-09-18 05:26:00生肖徽章:狗
日期:2006-10-06 13:28:27生肖徽章:狗
日期:2006-10-08 05:28:34生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
15#
 楼主| 发表于 2007-1-16 14:53 | 只看该作者
最初由 freezr 发布
[B]哥们,这个问题你以前不都问过了吗?怎么今天又拿出来问啊。
http://www.itpub.net/269435,1.html [/B]


今天对db block gets,current mode 还不是很清楚,所以。。。。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
16
生肖徽章:猴
日期:2006-09-07 17:03:51沸羊羊
日期:2015-03-04 14:43:43比亚迪
日期:2013-08-16 16:21:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:36生肖徽章2007版:虎
日期:2009-03-10 21:13:27生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53
16#
发表于 2007-1-16 14:55 | 只看该作者
rchsh 问的问题离现在3年了。

使用道具 举报

回复
论坛徽章:
26
ITPUB元老
日期:2005-02-28 12:57:00生肖徽章:兔
日期:2006-09-26 21:29:55生肖徽章:兔
日期:2006-09-07 17:01:32生肖徽章:兔
日期:2006-09-07 17:02:25生肖徽章:兔
日期:2006-09-07 17:02:46生肖徽章:兔
日期:2006-09-07 17:06:29生肖徽章:兔
日期:2006-09-18 05:26:00生肖徽章:狗
日期:2006-10-06 13:28:27生肖徽章:狗
日期:2006-10-08 05:28:34生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
17#
 楼主| 发表于 2007-1-16 15:06 | 只看该作者
最初由 drew 发布
[B]rchsh 问的问题离现在3年了。 [/B]


3年了!!!

使用道具 举报

回复
论坛徽章:
5
数据库板块每日发贴之星
日期:2005-08-04 01:01:32ITPUB元老
日期:2005-09-14 09:25:53授权会员
日期:2005-10-30 17:05:33会员2007贡献徽章
日期:2007-09-26 18:42:10ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
18#
发表于 2007-1-16 15:16 | 只看该作者
最初由 rchsh 发布
[B]

谢谢
对于consistent gets 比较的理解清楚了,就是说在select 的时候属于查询模式,oracle 的读是属于一致性模式的,也就是说oracle 的读遵从的是从开始读到结束读读到的数据都是同一时间点的。这个我明白

但是对current mode ,它是指当前读到的数据是什么就是什么,为什么在DML(insert,update,delete) 时才会有db block gets 呢?DML 与current mode  ,db block gets 有什么关系呢? [/B]


老兄,我觉得04年那个帖子,biti已经说的很清楚了。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
16
生肖徽章:猴
日期:2006-09-07 17:03:51沸羊羊
日期:2015-03-04 14:43:43比亚迪
日期:2013-08-16 16:21:192013年新春福章
日期:2013-02-25 14:51:242011新春纪念徽章
日期:2011-02-18 11:43:36生肖徽章2007版:虎
日期:2009-03-10 21:13:27生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53
19#
发表于 2007-1-16 15:28 | 只看该作者
最初由 freezr 发布
[B]

老兄,我觉得04年那个帖子,biti已经说的很清楚了。 [/B]



这种基础的问题,提提,巩固巩固,对我们新手还是有帮助的。呵呵

使用道具 举报

回复
论坛徽章:
26
ITPUB元老
日期:2005-02-28 12:57:00生肖徽章:兔
日期:2006-09-26 21:29:55生肖徽章:兔
日期:2006-09-07 17:01:32生肖徽章:兔
日期:2006-09-07 17:02:25生肖徽章:兔
日期:2006-09-07 17:02:46生肖徽章:兔
日期:2006-09-07 17:06:29生肖徽章:兔
日期:2006-09-18 05:26:00生肖徽章:狗
日期:2006-10-06 13:28:27生肖徽章:狗
日期:2006-10-08 05:28:34生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
20#
 楼主| 发表于 2007-1-16 15:42 | 只看该作者
重新读了biti 的帖子,现在终于明白了
current mode 和query mode 只不过是2种相对的不同的叫法。对于select 来说,由于oracle 的读一致性特性,在query mode 下,oracle 从buffer cache 中读到的数据必须是一致的,所以在query mode 下,oracle 可能或者不需要从undo 中读取数据,所以在query mode 下,就是consistents gets,所以在select 中一般只有consistent gets 而没有db block gets

而对于DML(insert,delete,update)操作,因为是修改数据就不需要什么一致性读了,就是直接在buffer cache 里面进行修改了,所以叫做current mode ,就是当前读到什么数据就修改,不需要保证数据库的一致性,因为修改都要将数据进行修改,修改呢?也是在buffer cache 中完成的,所以就叫做current mode ,为了和query 区别,对Buffer 的访问就叫做db block gets


偶总是想弄明白为什么这么叫,所以迷惑了

使用道具 举报

回复

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

本版积分规则 发表回复

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