oracle--统计信息

今天看一篇文章时,插入大量数据后发现查询和删除都是很低效,后来发现导致的原因是该问题产生不适因为CBO算法的问题,而是加载数据后没有同步更新统计信息。有个问题一直想不明白:数据库的索引是怎么自动选择的,如果一个表中有多个索引,在插入大量数据后选择时会根据那个索引呢?后来发现原来有“oracle统计信息这个东西”,于是了解了统计信息,这篇文章写得不错:http://1327236.blog.51cto.com/1317236/521690

1、Oracle根据统计信息中的下列条件来决定使用哪些索引:

(1)索引中的记录数;

(2)索引中不同键值的数量;

(3)索引的层数;

(4)索引中的叶块数;

(5)聚集因子;

(6)每个键值平均叶块数;

(7)如果两个索引的选择性、查询代价和集势都相同,那么优化器会根据索引名称的字母顺序选择

2、统计信息包括下面几类:

表统计:包括记录数、block数和记录平均长度。

列统计:列中不同值的数量(NVD)、空值的数量和数据分布(HISTOGRAM)。

索引统计:索引叶块的数量、索引的层数和聚集因子(CLUSTERING FACTOR)。

系统统计:I/O性能和利用率和CPU性能和利用率。

你可能感兴趣的:(oracle--统计信息)