WEB开发网
开发学院数据库DB2 DB2 LUW SQL 调优指南 阅读

DB2 LUW SQL 调优指南

 2010-02-04 00:00:00 来源:WEB开发网   
核心提示: 4. 统计信息最优的连接方法和顺序要靠优化器根据统计信息和代价模型得出,所以要确保统计信息的完整性和准确性,DB2 LUW SQL 调优指南(9),从实践中看,很大一部分性能问题是统计信息不准确或代价估算不精确导致的,比如利用下面的 Statistical View 可以精确的让优化器知道 T1

4. 统计信息

最优的连接方法和顺序要靠优化器根据统计信息和代价模型得出,所以要确保统计信息的完整性和准确性。从实践中看,很大一部分性能问题是统计信息不准确或代价估算不精确导致的。检查有性能问题的 SQL 的查询计划,要查看统计信息是否准确,中间结果的大小的估算是否符合实际情况。从 db2exfmt 中计划树的叶子节点,可以看到每个表的记录数的信息。注意如果记录数是 1000,可能是统计信息没有收集,因为在没有收集统计信息的情况下,记录数为缺省值 1000。从计划树的中间节点可以看到中间结果大小的估算值。如果这些值偏小(比如远小于 1),就说明估值不准确。这通常是由于对选择和连接谓词的选择性(Selectivity)的计算不精确造成的。解决这个问题需要收集表上和相关列上的更多的统计信息。例如,用下面的命令可以收集表上每个列的值的分布信息和索引的键值信息,以及 (c1,c2) 两个列相关的多维分布信息(用于同时在这两个列上都有谓词的查询)。

runstats on table Schema.T on all columns and columns((c1, c2)) with distribution and 
 detailed indexes all 

如果收集详细的统计信息仍然不能解决中间结果估值不准的问题,还可以使用下面的技术:

使用 Statistical View,比如利用下面的 Statistical View 可以精确的让优化器知道 T1, T2 连接后的中间结果和值的分布情况

 create view V as (select T1.* from T1, T2 where T1.c1 = T2.c1) 
 alter view V enable query optimization 
 runstats on table schema.V with distribution 

使用 Selectivity,就是直接指定选择谓词的选择性,这对于使用用户自定义函数的情况尤其有用。要指定 Selectivity 首先需要运行 db2set 命令:

上一页  4 5 6 7 8 9 10  下一页

Tags:DB LUW SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接