分区表,分区索引统计信息及 dba_tab_modifications

本文讨论了 Oracle 数据库中表分区、索引分析的时间一致性,包括表整体及分区、索引的分析时间,以及如何通过 `dba_tab_modifications` 表判断 DML 操作对统计分析的影响。
[i=s] 本帖最后由 tolywang 于 2011-9-30 16:09 编辑

Oracle 11.2.0.2.0   64bit ,  Linux AS 5.4   


select * from    dba_tab_modifications  WHERE  table_name='EDIBTO850_PO1PID' ;     

  P201001 是当前分区 (半年一个分区,  P201001 表示201107~201201)


TABLE_OWNER TABLE_NAME PARTITION_NAME SUBPARTITION_NAME INSERTS UPDATES DELETES TIMESTAMP
DFMS EDIBTO850_PO1PID   9,350 0 0 09-30-2011 00:01:41
DFMS EDIBTO850_PO1PID P201107  81,446 0 0 06-30-2011 23:48:06
DFMS EDIBTO850_PO1PID P201201  373,270 0 0 09-29-2011 23:55:43


select * from dba_tables where table_name='EDIBTO850_PO1PID' ;   
整个表的  LAST_ANALYZED:  2011-09-29 22:09:21  



select * from dba_indexes where  table_name='EDIBTO850_PO1PID' ;  
一个是局部分区索引 EDIBTO850_PO1PID_TIME,  LAST_ANALYZED: 2011-09-29 22:09:37 ,
一个是全局非分区索引 EDIBTO850_PO1PID_PK ,LAST_ANALYZED  2011-09-29 22:09:42


select * from ALL_TAB_PARTITIONS  where  table_name='EDIBTO850_PO1PID' ;  
表分区中当前时间的区段的 LAST_ANALYZED    2011-09-24 6:09:41,
其他区段 LAST_ANALYZED 都是     2011-06-30 14:20:47 左右  



select * from ALL_IND_PARTITIONS where  index_name = 'EDIBTO850_PO1PID_TIME'  ;  
局部分区索引当前时间的分区的 LAST_ANALYZED 是     2011-09-24 6:09:47 ,
局部分区索引其他非当前时间的分区  LAST_ANALYZED 是     2011-06-30 14:21:00  





以下说法是否正确 ?  

1.     整个表的DML操作达到数据的10%  (和上次分析统计相比), 所以整个表在2011-09-29 22:09 统计分析,同时也统计表

相关的所有Index (不管是否分区或本地,全局) 。所以他们的统计分析时间是一致的。  


2.     而table中的分区是独立的, 每个分区的DML操作达到这个分区的数据10% (和上次分析统计相比)时, 这个分区也会做分

析统计, 同时对应的局部分区索引也随之做统计分析 , 所以我们看到的表分区和他们对应的本地分区索引分析时间是一致的 。  


3.     dba_tab_modifications   表中PARTITION_NAME 为空的那行代表什么 ?  


4.  DML 操作达到数据的 10% ,   很多地方解释为更新的行数占总行数的10%,  说法不是太严谨,  做过简单测试,  更新的行次

占总数据行数的10% 就会统计  (类似  人数/人次) 。  




select * from  sys.dba_tab_modifications where table_owner='DFMS'  and table_name='AAA'  ;    AAA有 24笔记录, updates, inserts, deletes 值都是 0  

在AAA上修改5行不同记录  

执行    EXEC   DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO  ;   (系统不会立刻更新相关记录基表,这里手工执行)

select * from  sys.dba_tab_modifications where table_owner='DFMS' and table_name='AAA'  ;      


同样的方式在AAA 上修改同一条记录6次, 发现在 dba_tab_modifications 中 updates 值增加了6 .  

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

转载于:http://blog.itpub.net/35489/viewspace-708549/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值