ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 分区表,分区索引统计信息及 dba_tab_modifications

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

原创 Linux操作系统 作者:tolywang 时间:2011-09-30 16:28:01 0 删除 编辑
[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博客 ” ,链接:https://blog.itpub.net/35489/viewspace-708549/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14695471