控制动态统计
默认情况下,Oracle数据库会在缺少优化程序统计信息或需要扩充时自动收集动态统计信息。 为了获得统计信息,数据库在解析期间使用递归SQL来扫描表块的一小部分随机样本。
本节包含以下主题:
■动态统计的目的
■动态统计概念
■手动设置动态统计级别
■禁用动态统计信息
动态统计的目的
通过增加缺少或不足的优化程序统计信息,优化程序可以通过更好地估计谓词选择性来改进计划。动态统计信息可以补充统计信息,例如表块计数,适用的索引块计数,表基数(估计的行数)以及相关的连接列统计信息。
动态统计概念
默认情况下,数据库中启用了动态统计信息。您可以通过设置初始化参数OPTIMIZER_DYNAMIC_SAMPLING = 0来禁用该功能。
动态统计级别
动态统计级别控制数据库何时收集动态统计信息以及优化程序用于收集统计信息的样本大小。使用OPTIMIZER_DYNAMIC_SAMPLING初始化参数或语句提示设置动态统计级别。
表13-10介绍了动态统计级别。默认级别为2.从Oracle Database 11g第2版(11.2.0.4)开始,级别11使数据库能够在优化程序认为最佳的任何级别收集统计信息。
优化程序使用动态统计信息时
决定使用动态统计