查询数据时,segment header被访问的次数

在管理版上这样的说法:

如果是全表扫描,读取segment header之后会通过extent链的方式读下去,即使你drop掉表,由于物理块还是存在的所以不会出问题。
但是oracle每读10个extent会需要重新读取header一次,那么这个时候如果表不存在的话,会发现在数据字典里面已经不存在了,那么就会报表找不到。
和屏幕输出什么的没什么关系。。。

原文: http://www.itpub.net/viewthread. ... p;extra=&page=3

不太认同这样的说法,做了测试,如不对,欢迎大家指出:
测试环境: LINUX 4.6 + ORACLE 10.2.0.4
对象T1 的SEGEMNT 的信息:
SEGMENT_NAME                                                                         FILE_ID   BLOCK_ID
--------------------------------------------------------------------------------- ---------- ----------
T1                                                                                         1      55921
T1                                                                                         1      55929
T1                                                                                         1      55937
T1                                                                                         1      55945
T1                                                                                         1      55953
T1                                                                                         1      55961
T1                                                                                         1      55969
T1                                                                                         1      55977
T1                                                                                         1      55985
T1                                                                                         1      55993
可以看到SEGMENT HEADER 的BLOCK NUMBER为55921。
对象号为:17890, 所在的FILE NUMNER 为1。有80个BLOCK。
查询header被touch的次数:
select ADDR , FILE#, DBABLK   ,STATE ,  TCH  from x$bh where file#=1 and  OBJ=17890 and DBABLK=55921
在对TABLE做查询前先做查询,看SEGMENT HEADER 被访问的次数:
0000002A97A6D430          1      55921          1          8

进行查询:
SQL> select count(*) from t1;

  COUNT(*)
----------
      5790
再次查看SEGMENT HEADER被touch的次数:
SQL> /

ADDR                  FILE#     DBABLK      STATE        TCH
---------------- ---------- ---------- ---------- ----------
0000002A97A6D430          1      55921          1          9

看到touch次数只增加了1次,不是按照设想的增加为8+80/10=16次。

进行多次测试,结果都是一样的,都只增加一次。
将数据量变大为原先的4倍,再次测试结果也是一样的,都只增加一次。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/40239/viewspace-616596/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/40239/viewspace-616596/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值