WEB开发网
开发学院数据库DB2 DB2 最佳实践: 编写并调优查询语句以优化性能最佳... 阅读

DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践

 2009-11-12 00:00:00 来源:WEB开发网   
核心提示: 为什么这个什么都不做的谓词有时候却会提高查询性能?增加谓词“ no-op ” coalesce() 引入了一个错误掩盖了一些东西,要不然就是阻止了性能优化,DB2 最佳实践: 编写并调优查询语句以优化性能最佳实践(5),一些性能增强工具做了什么是一个强力测试:工具一再引入

为什么这个什么都不做的谓词有时候却会提高查询性能?增加谓词“ no-op ” coalesce() 引入了一个错误掩盖了一些东西,要不然就是阻止了性能优化。

一些性能增强工具做了什么是一个强力测试:工具一再引入谓词到一个查询的不同位置,操作不同的列,通过引入一个错误来尝试找到一种情况,这个错误出现在哪里影响了一个更好的查询计划。这也是一个真正的查询语句开发人员在一个查询中手动。编写“ no-op ”谓词。通常,开发人员会得到一些对数据的了解来指导这个谓词的放置。

使用这个方法来提高查询性能是一个短期的解决方案,它并没有定位根本原因而且会有以下影响:

性能提升的潜力被掩盖了。

不能保证这个 workaround 会提供永久的性能提高,就像 DB2 查询编译器可能最终更好的处理这个谓词或者其他随机因素可能影响了它。

或许会有其他语句受到相同的原因影响而且对系统性能的影响通常会由你的系统承受。

避免不相等的连接谓词

连接谓词使用比较操作,除了相等其他都应该避免。因为不相等连接方法就会限制为嵌套循环。而且,优化器或许不能为连接谓词计算一个精确的可选评估。然而不等连接谓词不能永远规避。当它们是必须的时候,确保一个谓词索引存在于任何一个表中,因为连接谓词将应用嵌套内部连接。

不等连接谓词的一个简单例子是,为了精确反映维度数据在不同的时间点的状态,一个星型模式中的维度数据必须版本化。这常常作为一个‘慢慢改变的维度’来被参考。一类慢慢改变的维度包括每个维度行的有效的开始和结束日期。为了连接维度的主键,一个在事实表和维度表之间的连接需要检查和事实表相关的数据,包括维度的开始和结束日期。这常常作为一个‘第 6 类慢慢改变的维度’被参考。范围连接回到事实表通过一些实际事务日期以进一步限定维度版本,成本会很高。例如:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:DB 最佳 实践

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