ITPUB??ì3
ITPUB论坛 » Oracle专题深入讨论 » 关于consistent get的问题

标题: 关于consistent get的问题
离线 solearn
中级会员


精华贴数 0
个人空间 0
技术积分 882 (2081)
社区积分 16 (8320)
注册日期 2006-4-28
论坛徽章:1
2008北京奥运纪念徽章:自行车     
      

发表于 2008-6-27 14:33 
关于consistent get的问题

对consistent get,始终不太理解。看了http://www.itpub.net/viewthread. ... p;extra=&page=1,概念上清楚了一些,但是对consistent get 具体包括哪些读,get计数的计算公式还是不太明白。


-------------------------------------------------------------------------------------------------------------------------
SQL> alter session set events '10200 trace name context forever,level 1';

Session altered.

SQL> select * from t8;

C                ID
-------- ----------
az             1330
by             1331
Candy          1332
Deskbook       1333
EggReady       1334
finefine       1335
aaa              32
aaa              33

8 rows selected.

SQL> alter session set events '10200 trace name context off';

Session altered.
---------------------------------------------------------------------------------------------------------------
Dump file fracleadmin        estdbudump        est_ora_1464.trc
Fri Jun 27 11:38:13 2008
ORACLE V9.2.0.1.0 - Production vsnsta=0
vsnsql=12 vsnxtr=3
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production
Windows 2000 Version 5.1 Service Pack 2, CPU type 586
Instance name: test

Redo thread mounted by this instance: 1

Oracle process number: 12

Windows thread id: 1464, image: ORACLE.EXE


*** 2008-06-27 11:38:13.000
*** SESSION ID9.7) 2008-06-27 11:38:13.000
Consistent read started for block 6 : 01800014
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800014
Consistent read finished for block 6 : 1800014
Consistent read started for block 6 : 01800014
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800014
Consistent read finished for block 6 : 1800014
Consistent read started for block 6 : 01800015
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800015
Consistent read finished for block 6 : 1800015
Consistent read started for block 6 : 01800016
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800016
Consistent read finished for block 6 : 1800016
Consistent read started for block 6 : 01800017
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800017
Consistent read finished for block 6 : 1800017
Consistent read started for block 6 : 01800018
  env: (scn: 0x0000.00678f54  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  01FEE950  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
Consistent read finished for block 6 : 1800018
Consistent read finished for block 6 : 1800018
------------------------------------------------------------------------------------------------------------------------------------------------



SQL> set autot trace
SQL> select * from t8;

8 rows selected.


Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=11 Bytes=88)
   1    0   TABLE ACCESS (FULL) OF 'T8' (Cost=2 Card=11 Bytes=88)




Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
        554  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          8  rows processed

SQL> set autot off

SQL> select id,dbms_rowid.rowid_relative_fno(rowid) file#,
  2  dbms_rowid.rowid_block_number(rowid) block#,
  3  dbms_rowid.rowid_row_number(rowid) row#
  4  from t8;

        ID      FILE#     BLOCK#       ROW#
---------- ---------- ---------- ----------
      1330          6         20          4
      1331          6         20          5
      1332          6         20          6
      1333          6         20          7
      1334          6         20          8
      1335          6         20          9
        32          6         22          0
        33          6         22          1

疑问:从trace看,这个查询要8个consistent get。但是在dump里看,似乎只有6个?我对这个10200事件也不太懂。8个consistent get是怎么计算出来的?consistent gets=blocks+rownum/arraysize这个公式成立吗?


__________________
某年,空中旅行。观舷窗外,景色灿烂。乃感而留言。   

    扶摇上青天,凌云近日边。
    千光投下界,万色绣山川。
    居高无阴雨,御风任左前。
    层天绝尘境,云何不羡仙。

=====================
===抬起头,看看彩色的世界===
=====================
只看该作者    顶部
离线 Yong Huang
版主



精华贴数 2
个人空间 0
技术积分 3994 (347)
社区积分 120 (3015)
注册日期 2001-10-9
论坛徽章:6
现任管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章授权会员2008年新春纪念徽章
      

发表于 2008-6-28 01:58 
I can reproduce it, in 10.2.0.4. Here's my guess. The "consistent gets" reported by sqlplus autotrace is the same named database statistic "consistent gets", which is "Number of times a consistent read was requested for a block" according to the Reference manual. But the dump of 10200 (or 10202) event is "no work - consistent read gets", which is "Number consistent gets that require neither block cleanouts nor rollbacks".

So what's the difference? I'm guessing again. It's possible the "consistent gets" is only requests for CR reads while the "no work..." stat is the actual reads. For some reason, 2 of the 8 buffer reads become unnecessary. Maybe the 2 buffers are the same as 2 of the existing 6? Or maybe there's table prefetch so that 2 buffers are already "piggyback" read during the 6 buffer read? If the latter, we can turn off prefecth and prove the theory.

Yong Huang


只看该作者    顶部
离线 wang5
一般会员



精华贴数 0
个人空间 0
技术积分 694 (2694)
社区积分 21 (7270)
注册日期 2006-4-11
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2008-6-28 14:55 
我曾经想过这个问题,没有太深入,你看看对你有没有启发
http://valen.blog.ccidnet.com/bl ... -itemid-273622.html


只看该作者    顶部
离线 Yong Huang
版主



精华贴数 2
个人空间 0
技术积分 3994 (347)
社区积分 120 (3015)
注册日期 2001-10-9
论坛徽章:6
现任管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章授权会员2008年新春纪念徽章
      

发表于 2008-6-28 21:18 


QUOTE:
原帖由 wang5 于 2008-6-28 00:55 发表
我曾经想过这个问题,没有太深入,你看看对你有没有启发
http://valen.blog.ccidnet.com/bl ... -itemid-273622.html

Thanks. I read your blog. It's good. But it doesn't explain the missing 2 CR gets in the 10200 or 10202 dump compared to autotrace or v$sesstat statistic.

Yong Huang


只看该作者    顶部
离线 eagle_fan
高级会员


精华贴数 3
个人空间 0
技术积分 2572 (597)
社区积分 348 (1670)
注册日期 2003-10-6
论坛徽章:6
现任管理团队成员ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章
      

发表于 2008-6-30 11:10 
As Yong said, 10200  trace file doesn't include "UNDO blocks"

For example:

Session A:

SQL> select * from t;

         X
----------
         5

  1  begin
  2   for i in 1..1000 loop
  3    update t set x=i;
  4   end  loop;
  5* end;
SQL> /

PL/SQL procedure successfully completed.

Session B:


SQL> alter session set events '10200 trace name context forever,level 1';

Session altered.

SQL> alter session set events '10046 trace name context forever, level 8';

Session altered.

SQL> select * from t;

         X
----------
         5

trace file:

*** 2008-06-29 20:04:55.592
*** SESSION ID16.623) 2008-06-29 20:04:55.591
APPNAME mod='SQL*Plus' mh=3669949024 act='' ah=4029777240
=====================
PARSING IN CURSOR #3 len=68 dep=0 uid=74 oct=42 lid=74 tim=7575093677479 hv=2212335334 ad='a8fb0e38'
alter session set events '10046 trace name context forever, level 8'
END OF STMT
EXEC #3:c=0,e=226,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=7575093675639
WAIT #3: nam='SQL*Net message to client' ela= 7 p1=1650815232 p2=1 p3=0
WAIT #3: nam='SQL*Net message from client' ela= 6440262 p1=1650815232 p2=1 p3=0
=====================
PARSING IN CURSOR #3 len=15 dep=0 uid=74 oct=3 lid=74 tim=7575100119767 hv=520543201 ad='a9a75fe0'
select * from t
END OF STMT
PARSE #3:c=0,e=1206,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=7575100119756
EXEC #3:c=0,e=122,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=7575100120167
WAIT #3: nam='SQL*Net message to client' ela= 5 p1=1650815232 p2=1 p3=0
Consistent read started for block 25 : 0780c3f3
  env: (scn: 0x0002.bceb3889  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  statement num=0  parent xid: xid: 0x0000.000.00000000  scn: 0x0000.00000000 0sch: scn: 0x0000.00000000)
CR exa ret 9 on:  380012b98  scn: 0xffff.ffffffff  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0xffff.ffffffff  sfl: 0
CR exa ret 1 on:  381fd5490  scn: 0x0002.bceb386f  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0x0002.bceb386f  sfl: 0
CR exa ret 1 on:  381fbf890  scn: 0x0002.bceb386e  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0x0002.bceb386e  sfl: 0
CR exa ret 1 on:  381fcc890  scn: 0x0002.bceb386d  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0x0002.bceb386d  sfl: 0
CR exa ret 1 on:  382fa1d90  scn: 0x0002.bceb386c  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0x0002.bceb386c  sfl: 0
CR exa ret 1 on:  381fef890  scn: 0x0002.bceb386b  xid: 0x0000.000.00000000  uba: 0x00000000.0000.00  scn: 0x0002.bceb386b  sfl: 0
Consistent read finished for block 25 : 780c3f3
Consistent read finished for block 25 : 780c3f3
FETCH #3:c=0,e=8232,p=0,cr=1004,cu=0,mis=0,r=1,dep=0,og=4,tim=7575100128586
WAIT #3: nam='SQL*Net message from client' ela= 836 p1=1650815232 p2=1 p3=0
FETCH #3:c=0,e=13,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=7575100129645
WAIT #3: nam='SQL*Net message to client' ela= 2 p1=1650815232 p2=1 p3=0
WAIT #3: nam='SQL*Net message from client' ela= 2737371 p1=1650815232 p2=1 p3=0
XCTEND rlbk=0, rd_only=1
STAT #3 id=1 cnt=1 pid=0 pos=1 obj=22022 op='TABLE ACCESS FULL OBJ#(22022) '


__________________
只看该作者    顶部
离线 Yong Huang
版主



精华贴数 2
个人空间 0
技术积分 3994 (347)
社区积分 120 (3015)
注册日期 2001-10-9
论坛徽章:6
现任管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章授权会员2008年新春纪念徽章
      

发表于 2008-6-30 11:34 
Thanks, eagle_fan. When you have time, please come to this forum more often. One suggestion. When you post, please give some more explanations. For instance, what do the highlighted numbers mean?

I actually didn't think in the line of not counting UNDO blocks by 10200 trace, but you may be right. Now when I read my past messages, I was probably digressing too much. If my simple test is correct, i.e., CR gets in 10200 trace only corresponds to "no work - consistent read gets", not "consistent gets" or the same named number in autotrace (unless accidentally), then we just need to explain the number difference by saying that the extra CR gets (2 in our tests) are due to either rollback (UNDO) or cleanouts. If we can make sure there's neither rollback of inconsistent blocks nor block cleanouts, the 10200 trace should show the same number as autotrace "consistent gets". You agree?

Yong Huang


只看该作者    顶部
离线 eagle_fan
高级会员


精华贴数 3
个人空间 0
技术积分 2572 (597)
社区积分 348 (1670)
注册日期 2003-10-6
论坛徽章:6
现任管理团队成员ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章
      

发表于 2008-6-30 23:56 
In my last test, I put 10046 trace & 10200 trace togerther. The highlighted line comes from 10046 trace, not 10200 trace. I used 10046 trace instead of autotrace "consistent gets".


__________________
只看该作者    顶部
离线 eagle_fan
高级会员


精华贴数 3
个人空间 0
技术积分 2572 (597)
社区积分 348 (1670)
注册日期 2003-10-6
论坛徽章:6
现任管理团队成员ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章
      

发表于 2008-7-1 00:12 
BTW: why it's 10200 not 10202 trace? I searched my msn blog and found that I was using 10202 trace.

http://oracledba.spaces.live.com ... 6BA028F14!247.entry

10200 block cleanout
10201 consistent read undo application
10202 consistent read block header

I'm working on my laptop and it doesn't have test environment installed.

Yong, if you have time, you can do some tests.


__________________
只看该作者    顶部
离线 Yong Huang
版主



精华贴数 2
个人空间 0
技术积分 3994 (347)
社区积分 120 (3015)
注册日期 2001-10-9
论坛徽章:6
现任管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章授权会员2008年新春纪念徽章
      

发表于 2008-7-1 01:25 


QUOTE:
原帖由 eagle_fan 于 2008-6-30 09:56 发表
In my last test, I put 10046 trace & 10200 trace togerther. The highlighted line comes from 10046 trace, not 10200 trace. I used 10046 trace instead of autotrace "consistent gets".

I understand that. I'd like you to explain the highlighted numbers. For instance, what's the signicance of "cr=1004"? How is it related to other part of your message?

Yong Huang


只看该作者    顶部
离线 eagle_fan
高级会员


精华贴数 3
个人空间 0
技术积分 2572 (597)
社区积分 348 (1670)
注册日期 2003-10-6
论坛徽章:6
现任管理团队成员ITPUB元老会员2007贡献徽章会员2006贡献徽章授权会员ITPUB新首页上线纪念徽章
      

发表于 2008-7-1 09:00 
"cr=1004" means consistent reads = 1004 blocks.

But in 10200 trace part, it only has one block:

Consistent read started for block 25 : 0780c3f3.

1004 = 1000 undo apply reads + 3 segment header reads + 1 data block read (no work - consistent read gets)

10201 trace will give you undo apply information.

[ 本帖最后由 eagle_fan 于 2008-7-1 10:30 编辑 ]


__________________
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问