oracle收集如下的索引统计信息。对于常规索引,可以在视图USER_INDEXES, ALL_INDEXES, and DBA_INDEXES中查看到如下的统计信息。
* Depth of the index from its root block to its leaf blocks (BLEVEL)(从0开始)Number of leaf blocks (LEAF_BLOCKS) (叶子块的数量)
Number of distinct index values (DISTINCT_KEYS)
Average number of leaf blocks per index value (AVG_LEAF_BLOCKS_PER_KEY) (每个索引值存在于几个叶子块,通常为1)
Average number of data blocks per index value (for an index on a table) (AVG_DATA_BLOCKS_PER_KEY) (每个索引值对应的记录存在于几个数据块,通常为1)
Clustering factor (how well ordered the rows are about the indexed values) (CLUSTERING_FACTOR)(聚簇因子)
Where are the statistics stored
Statistics are stored into the Oracle Data Dictionary, in tables owned by SYS. Views are created on these tables to retrieve data more easily.These views are prefixed with DBA_ or ALL_ or USER_. For ease of reading, we will use DBA_% views, but ALL_% views or USER_% views could be used as well.
统计信息存储在数据字典中,在sys用户下的表内。通过视图我们可以非常方便的从这些表中获取信息。视图通常以DBA_ USER_ ALL_开始。为了简便,我们以DBA_开头的视图为例。
Conventions Used
- Statistics available only since 8.0.X rdbms release : (*) - Statistics available only since 8.1.X rdbms release : (**) - Statistics not available at partition or subpartition level : (G) - Statistics not available at subpartition level : (GP)Table level statistics can be retrieved from:
DBA_ALL_TABLES - (8.X onwards)DBA_OBJECT_TABLES - (8.X onwardsDBA_TABLES - (all versions)DBA_TAB_PARTITIONS - (8.X onwards)DBA_TAB_SUBPARTITIONS - (8.1 onwards)Columns to look at are:
NUM_ROWS : Number of rows (always exact even when computed with ESTIMATE method) BLOCKS : Number of blocks which have been used even if they are empty due to delete statements EMPTY_BLOCKS : Number of empty blocks (these blocks have never been used) AVG_SPACE : Average amount of FREE space in bytes in blocks allocated to the table : Blocks + Empty Blocks CHAIN_CNT : Number of chained or migrated rows AVG_ROW_LEN : Average length of rows in bytes AVG_SPACE_FREELIST_BLOCKS (*)(G) : Average free space of blocks in the freelist NUM_FREELIST_BLOCKS (*)(G) : Number of blocks in the freelist SAMPLE_SIZE : Sample defined in ESTIMATE method (0 if COMPUTE) LAST_ANALYZED : Timestamp of last analysis GLOBAL_STATS (**) : For partitioned tables, YES means statistics are collected for the TABLE as a whole NO means statistics are estimated from statistics on underlying table partitions or subpartitions USER_STATS (**) : YES if statistics entered directly by the userIndex level statistics can be retrieved from:
DBA_INDEXES - (all versions )DBA_IND_PARTITIONS - (8.X onwards)DBA_IND_SUBPARTITIONS - (8.1 onwards )Columns to look at are:
BLEVEL : B*Tree level : depth of the index from its root block to its leaf blocks (从0开始) LEAF_BLOCKS : Number of leaf blocks DISTINCT_KEYS : Number of distinct keys AVG_LEAF_BLOCKS_PER_KEY : Average number of leaf blocks in which each distinct key appears (1 for a UNIQUE index) AVG_DATA_BLOCKS_PER_KEY : Average number of data blocks in the table that are pointed to by a distinct key CLUSTERING_FACTOR : - if near the number of blocks, then the table is ordered : index entries in a single leaf block tend to point to rows in same data block - if near the number of rows, the table is randomly ordered : index entries in a single leaf block are unlikely to point to rows in same data b