consistent gets 参数的困惑

[复制链接]
查看11 | 回复7 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
consistent gets参数从网上查了些资料, 我理解执行计划中此参数的意思是在查询的过程中,由于其他会话对数据块进行操作,而对所要查询的块有了修改,但是由于我们的查询是在这些修改之前调用的,所以需要对回滚段中的数据块的前映像进行查询。 但是我在本机数据库上用scott/tiger登陆, 查询emp表, 此时肯定没有别的会话对emp表进行修改操作,也就不会从回滚段中查询数据块, 但consistent gets还是有值, 请教各位consistent gets的值是如何取得的? 这个值如果过大会不会影响SQL的执行效率? 执行计划如下:
SQL> select * from emp;
已选择14行。

执行计划
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id| Operation | Name | Rows| Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT||14 | 518 | 3 (0)| 00:00:01 |
| 1 |TABLE ACCESS FULL| EMP|14 | 518 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------

统计信息
----------------------------------------------------------

0recursive calls

0db block gets

8consistent gets

0physical reads

0redo size
1412bytes sent via SQL*Net to client
385bytes received via SQL*Net from client

2SQL*Net roundtrips to/from client

0sorts (memory)

0sorts (disk)
14rows processed
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
帮帮忙吧... 困惑呀...


回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
DB Block Gets. 当前块被请求的次数。
当存在时,当前模式块将被立即检索,而不会以一致读的方式检索。通常,查询检索的块如果在查询开始时存在,它们就被检索。当前模式块如果存在就立即被检索,而不是从一个以前的时间点检索。在一个SELECT期间,你可以看到当前模式检索,因为对于需要进行全面扫描的表来说,需要读数据字典来找到范围信息(因为你需要"立即"信息,而不是一致读)。在修改期间,为了向块中写入内容,你要以当前模式访问块。
· Consistent Gets. 对于一个块一致读被请求的次数。
这是你以"一致读"模式处理的块数。为了回滚一个块,这将包括从回滚段读取的块的数目。例如,这是你在SELECT语句中读取块的模式。当你进行一个指定的UPDATE/DELETE操作时,你也以一致读模式读取块,然后以当前模式获得块以便实际进行修改。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
consistent gets的計算是很多因素有關吧,像rownum...
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
顶楼主,这也是我想问的
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
consistent gets 是指一致性模式下获取的数据,保证数据是consistent ,如果数据本来就是consistent 的,就不需用undo来consistent read。
consistent gets,这里的consistent 是副词。哈
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
原帖由 netbbs 于 2008-10-31 17:09 发表
consistent gets 是指一致性模式下获取的数据,保证数据是consistent ,如果数据本来就是consistent 的,就不需用undo来consistent read。
consistent gets,这里的consistent 是副词。哈


consistent gets 那就是说是从磁盘或是Buffer里读出的数据块与undo中读出的数据块之和了?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这里的一致读也就是从内存中读取的数据块,包括各种来源(来自一致读和普通读)
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行