分类: DB2/Informix
2008-05-31 16:53:13
更新统计信息的调优
IDS 使用基于成本的优化器:
当优化器确定查询计划时,它为每个可能的计划赋予一个成本,然后选择成本最低的计划。下面是优化器用于确定每个查询计划的成本的一些因素:
DS_TOTAL_MEMORY
和 DS_MAX_QUERIES
参数指定) 为了计算每种可能的查询计划的成本,优化器:
它使用系统编目表 SYSDISTRIB 确定成本。
UPDATE STATISTICS
语句更新优化器用于确定最低成本的查询计划的系统编目中的统计信息。
下面的统计信息是由 CREATE INDEX
带或者不带 ONLINE
关键字自动生成的。
为确保优化器选择最能反映表的当前状态的查询计划,当没有自动生成动态表(即数据不断变化)的统计信息时,应定期运行 UPDATE STATISTICS
。
下面的表 5 总结了何时运行不同的 UPDATE STATISTICS
语句。如果有很多表,那么可以编写一个脚本以生成这些 UPDATE STATISTICS
语句。ISA 可以为表生成很多 UPDATE STATISTICS
语句。
列 | 描述 |
---|---|
UPDATE STATISTICS LOW DROP DISTRIBUTIONS |
|
UPDATE STATISTICS LOW |
|
UPDATE STATISTICS MEDIUM DISTRIBUTIONS ONLY |
|
UPDATE STATISTICS HIGH |
|
新特性将查询优化器可用统计信息的收集的某些方面自动化,并使用户可以更好地控制这些统计信息的收集和显示。
UPDATE STATISTICS
,查询优化器就可以使用该特性自动收集的索引和列统计信息。也可以在 SET EXPLAIN 输出中新的查询统计信息部分查看关于完成的查询的统计信息。
SAMPLING SIZE
选项可以指定用于列分布抽样的最小行数。 SAMPLING SIZE 关键字和 UPDATE STATISTICS MEDIUM
一起使用,用于指定在计算列分布统计信息时抽样的最小行数。抽样的行数将大于以下两个值:
每个 bin 中的行的默认百分比为 2.5%,最小置信度为 .80。
例如,清单 4 中的语句计算 customer 表中三个列的统计信息。至少有 300 行被抽样,但是实际抽样可能多于 300 行。然而,如果需要更多的行以满足默认的 0.80 的置信度,那么对于一个使用 60 个同等类别的示例分布,将抽样更多的行。每个 bin 中被抽样的值的平均百分比将为 3%。
UPDATE STATISTICS MEDIUM FOR TABLE customer (address1, city, state) SAMPLING SIZE 300 RESOLUTION 3 DISTRIBUTIONS ONLY; |
当 UPDATE STATISTICS MEDIUM
运行时,Dynamic Server 总是在系统编目中记录实际抽样大小(表中总行数的百分比)。