深入优化DB2 数据库的五个最佳实践
2007-05-20 16:19:55 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁惧墽鎳撻—鍐偓锝庝簻椤掋垺銇勯幇顖毿撻柟渚垮妼椤粓宕卞Δ鈧獮濠勭磽閸屾艾鈧懓顫濋妸鈺佺疅缂佸顑欓崥瀣煕椤愵偅绶氱紓鍐╂礋濮婂宕掑▎鎴М濠电姭鍋撻梺顒€绉甸幆鐐哄箹濞n剙濡肩紒鎰殜閺屸€愁吋鎼粹€茬敖婵炴垶鎸哥粔鐢稿Φ閸曨垰鍐€妞ゆ劦婢€濞岊亪姊虹紒妯诲蔼闁稿海鏁诲濠氭晲婢跺﹤宓嗛梺缁樺姈缁佹挳宕戦幘璇叉嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹


图7:Querythatisnon-indexableandnon-sargable(stage2)
一个新场景被创建并且查询被重写在列值中使用"a>="和"a<="。注意,谓词现在是可索引的和sargable。记住以上的信息,谓词现在将由数据管理器(阶段1)处理,以减少这次查询的潜在响应时间。

图8:查询是indexable和sargable(阶段1)
随后可以使用比较工具来比较他们和"<>"之间的性能,会发现"<>"更有效的减少消耗的时间。

图9:耗时减半
解决的技巧3:选择唯一需要的列:
SQL调优的特点不仅是相对于使用"SELECT*"的建议,更提供一个事半功倍的可以令产品自动重写SQL的特点。建议和相对应的建议操作将提供重写您SQL的能力,简单地检查想要的列并选择"applyadvice"按钮,SQL调优将用被选择的列替换"*"。

图10:"applyadvice"的特点是将重写SQL,并重视选择的建议操作。
解决的技巧4:选择唯一需要的行:
越少的行被检索,查询将运行的越快。使用QuestCentral能比较您最初的SQL相对于选择较少行但相同的SQL语句。使用多个场景和利用比较特点,比较那些立刻显示发生变化的性能影响的场景。在以下例子中,两张表单的加入,产生了一个有意义的结果集。由于加入了"FetchFirst1RowOnly'"执行时间显著的减少了。

图12:为了减少行数而修改一个SELECT语句,用来比较确认性能的受益。
解决的技巧5:使用常量和字面值,如果值在以后的3年中不改变(对于静态查询):
在这个例子中,让我们进行一个基于Win2K平台的DB2测试。当使用主机变量时,DB2优化器无法预测谓词过滤的值。没有这个值,DB2将默认并使用上面列出的默认的过滤器要素。QuestCentralSQL调优将一直显示过滤器要素用以帮助了解有多少列将被过滤。

图12:QuestCentral显示每个谓词的过滤器要素
更多精彩
赞助商链接