1、Oracle统计信息概要
优化器统计范围:
表统计: 行数,块数,行平均长度;all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN;
列统计: 列中唯一值的数量(NDV),NULL值的数量,数据分布;
DBA_TAB_COLUMNS:NUM_DISTINCT,NUM_NULLS,HISTOGRAM;
索引统计:叶块数量,等级,聚簇因子;
DBA_INDEXES:LEAF_BLOCKS,CLUSTERING_FACTOR,BLEVEL;
系统统计:I/O性能与使用率;
CPU性能与使用率;
存储在aux_stats$中,需要使用dbms_stats收集,I/O统计在X$KCFIO中;
2、优化器存储统计信息的基表
o DBA_TABLES
o DBA_OBJECT_TABLES
o DBA_TAB_STATISTICS
o DBA_TAB_COL_STATISTICS
o DBA_TAB_HISTOGRAMS
o DBA_INDEXES
o DBA_IND_STATISTICS
o DBA_CLUSTERS
o DBA_TAB_PARTITIONS
o DBA_TAB_SUBPARTITIONS
o DBA_IND_PARTITIONS
o DBA_IND_SUBPARTITIONS
o DBA_PART_COL_STATISTICS
o DBA_PART_HISTOGRAMS
o DBA_SUBPART_COL_STATISTICS
o DBA_SUBPART_HISTOGRAMS
o INDEX_STATS 存储ANALYZE ..VALIDATE STRUCTURE统计信息
o AUX_STATS$ 存储CPU统计信息
o X$KCFIO 存储I/O统计信息
3、Oracle系统统计信息
使用DBMS_STATS.GATHER_SYSTEM_STATS收集系统统计,Oracle推荐收集系统统计。收集系统统计需要DBA权限。
收集的优化器系统统计包括:
cpuspeedNW:代表无负载CPU速度,CPU速度为每秒钟CPU周期数;
通过设置gathering_mode = NOWORKLOAD或手工设置统计;单位Millions/sec。
ioseektim:I/O查找时间=查找时间+延迟时间+OS负载时间;
通过设置gathering_mode = NOWORKLOAD或手工设置统计;单位为ms。
Iotfrspeed:I/O传输速度;
通过设置gathering_mode = NOWORKLOAD或手工设置统计;单位为Bytes/ms.
Cpuspeed:代表有负载CPU速度,CPU速度为每秒钟CPU周期数;
通过设置gathering_mode =NOWORKLOAD,INTERVAL, START|STOP或手工设置统计;单位Millions/sec。
Maxthr:最大I/O吞吐量;
通过设置gathering_mode =NOWORKLOAD,INTERVAL, START|STOP
或手工设置统计;单位Bytes/sec.
Slavethr:服务I/O吞吐量是平均并行服务I/O吞吐量;
通过设置gathering_mode = INTERVAL,START|STOP或手工设置统计;Bytes/sec.
Sreadtim:随机读取单块的平均时间;
通过设置gathering_mode =INTERVAL,START|STOP或手工设置统计;单位为ms。
Mreadtim:顺序读取多块的平均时间,
通过设置通过设置gathering_mode = INTERVAL,START|STOP或手工设置统计;单位为ms。
Mbrc: 多块读平均每次读取的块数量;
通过设置通过设置gathering_mode = INTERVAL,START|STOP或手工设置统计;单位为blocks。