查看: 7254|回复: 35

consistent gets是被如何计算出来的?

[复制链接]
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
跳转到指定楼层
1#
发表于 2006-12-7 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
consistent gets是被如何计算出来的?哪怕是粗略的!
[php]
SQL> select * from t;

        ID
----------
         1


执行计划
----------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    13 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| T    |     1 |    13 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

Note
-----
   - dynamic sampling used for this statement


统计信息
----------------------------------------------------------
          5  recursive calls
          0  db block gets
          7  consistent gets
          0  physical reads
          0  redo size
        406  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> desc t
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

ID                                                 NUMBER(38)
''''
[/php]
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
2#
 楼主| 发表于 2006-12-7 12:17 | 只看该作者
[php]
SQL> analyze table t compute statistics;

表已分析。

SQL> select table_name , blocks , empty_blocks FROM user_tables where table_name
='T';

TABLE_NAME                         BLOCKS EMPTY_BLOCKS
------------------------------ ---------- ------------
T                                       1            6

SQL> show arraysize
arraysize 15
SQL>
''
[/php]
没有人路过?

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2005-04-27 08:46:182013年新春福章
日期:2013-02-25 14:51:242012新春纪念徽章
日期:2012-01-04 11:49:54鲜花蛋
日期:2011-12-27 22:39:17ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010新春纪念徽章
日期:2010-03-01 11:20:51生肖徽章2007版:牛
日期:2009-07-13 12:53:13生肖徽章2007版:蛇
日期:2009-03-19 13:57:24生肖徽章2007版:牛
日期:2008-12-17 10:30:43奥运会纪念徽章:足球
日期:2008-10-24 13:28:14
3#
发表于 2006-12-7 12:34 | 只看该作者
这7个consistent gets是不是还包括读取数据字典的block?
我想,需要跟踪一下执行select * from t时所生成的所有SQL语句。

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
4#
 楼主| 发表于 2006-12-7 12:42 | 只看该作者
有点晕,重启实例之后怎么还都变成了0
[php]
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  268435456 bytes
Fixed Size                  1248476 bytes
Variable Size              75498276 bytes
Database Buffers          188743680 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> connect xys/manager
已连接。

SQL> set autotrace on
SQL> alter session set sql_trace=true;

会话已更改。

SQL> select *from t;

        ID
----------
         1


执行计划
----------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| T    |     1 |     2 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
          0  bytes sent via SQL*Net to client
          0  bytes received via SQL*Net from client
          0  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
''
SQL>
[/php]

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
5#
 楼主| 发表于 2006-12-7 12:57 | 只看该作者
重启了一下服务之后的结果
[php]
SQL> set autotrace on
SQL> alter session set sql_trace=true;

会话已更改。

SQL> select *from t;

        ID
----------
         1


执行计划
----------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| T    |     1 |     2 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------


统计信息
----------------------------------------------------------
        853  recursive calls
          0  db block gets
        123  consistent gets
          8  physical reads
          0  redo size
        402  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          8  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> alter session set sql_trace=false;

会话已更改。
SQL>
''
[/php]
trace结果见附件!

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
6#
 楼主| 发表于 2006-12-7 12:58 | 只看该作者
trace结果!

trace.txt

63.11 KB, 下载次数: 15

使用道具 举报

回复
论坛徽章:
0
7#
发表于 2006-12-7 13:24 | 只看该作者
友情up
consistent gets是表示从回滚段读取的块的次数

第二段代码的前几项都为0,不理解

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-11-28 16:52:07会员2006贡献徽章
日期:2006-04-17 13:46:34参与2007年甲骨文全球大会(中国上海)纪念
日期:2007-08-06 15:19:01
8#
发表于 2006-12-7 13:27 | 只看该作者
consistent gets表示构造这个一致性的视图需要读取的逻辑块数,这些块有的是当前的,有的是需要通过回滚段构造的,不是全部的回滚段数据,CR计算公式我是不知道,只要对自己的数据有个主观的认识就OK了

使用道具 举报

回复
论坛徽章:
41
ITPUB元老
日期:2007-04-18 10:10:372012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23迷宫蛋
日期:2012-05-09 13:09:18双黄蛋
日期:2013-01-21 12:55:59马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
9#
发表于 2006-12-7 13:44 | 只看该作者
最初由 warehouse 发布
[B]有点晕,重启实例之后怎么还都变成了0
[php]
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  268435456 bytes
Fixed Size                  1248476 bytes
Variable Size              75498276 bytes
Database Buffers          188743680 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> connect xys/manager
已连接。

SQL> set autotrace on
SQL> alter session set sql_trace=true;

会话已更改。

SQL> select *from t;

        ID
----------
         1


执行计划
----------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |     2 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| T    |     1 |     2 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------


统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
          0  bytes sent via SQL*Net to client
          0  bytes received via SQL*Net from client
          0  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
''
SQL>
[/php] [/B]


重启之后变成0倒是可以理解的,这时候你不需要从rollback里面去读了,我猜的

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
10#
 楼主| 发表于 2006-12-7 13:51 | 只看该作者
最初由 WESTLIFE_XU 发布
[B]

重启之后变成0倒是可以理解的,这时候你不需要从rollback里面去读了,我猜的 [/B]


本来也不需要从undo里面去读啊

使用道具 举报

回复

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

本版积分规则 发表回复

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