一、摘要
Statistic 对Oracle 是非常重要的。
它会收集数据库中对象的详细信息,并存储在相应的数据字典里。 根据这些统计信息, optimizer 可以对每个SQL 去选择最好的执行计划。
Statistic 对Oracle 是非常重要的,它会收集数据库中对象的详细信息,并存储在相应的数据字典里。
根据这些统计信息, optimizer 可以对每个SQL 去选择最好的执行计划。
Oracle Statistic 的收集,可以使用analyze 命令,也可以使用DBMS_STATS 包来收集。
Oracle 建议使用DBMS_STATS包来收集统计信息,因为DBMS_STATS包收集的更广,并且更准确,Analyze 在以后的版本中可能会被移除。
二、统计信息内容和层次
1. Table statistics
(1). 行数,块数,行平均长度
(2). DBA_TBALES:NUM_ROWS,BLOCKS,AVG_ROW_LEN;
- Number of rows
- Number of blocks
- Average row length
2. Column statistics
(1). 列中唯一值的数量(NDV),NULL值的数量,数据分布;
(2). DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM;
- Number of distinct values (NDV) in column
- Number of nulls in column
- Data distribution (histogram)
3. Index statistics
(1). 叶块数量,等级,聚簇因子;
(2). DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL;
- Number of leaf blocks
- Levels
- Clustering factor