DB2 LUW SQL 调优指南
2010-02-04 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鎯у⒔閹虫捇鈥旈崘顏佸亾閿濆簼绨绘い鎺嬪灪閵囧嫰骞囬姣挎捇鏌熸笟鍨妞ゎ偅绮撳畷鍗炍旈埀顒勭嵁婵犲嫮纾介柛灞捐壘閳ь剛鎳撻~婵嬪Ω閳轰胶鐤呯紓浣割儐椤戞瑩宕ョ€n喗鐓曟い鎰靛亝缁舵氨绱撻崘鈺傜婵﹤顭峰畷鎺戔枎閹搭厽袦婵犵數濮崑鎾绘⒑椤掆偓缁夌敻骞嗛悙鍝勭婵烇綆鍓欐俊鑲╃磼閹邦収娈滈柡灞糕偓鎰佸悑閹肩补鈧尙鏁栧┑鐐村灦閹稿摜绮旈悽绋课﹂柛鏇ㄥ灠閸愨偓濡炪倖鍔﹀鈧繛宀婁邯濮婅櫣绱掑Ο璇茶敿闂佺ǹ娴烽弫璇差嚕婵犳碍鏅插璺猴工瀹撳棝姊虹紒妯哄缂佷焦鎸冲畷鎴﹀箻鐠囧弶宓嶅銈嗘尰缁嬫垶绂嶉悙顒佸弿婵☆垳鍘ф禍楣冩倵濮樼偓瀚�

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 命令:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接