数据架构师:DB2 数据仓库性能,第 2 部分:寻找有问题的 SQL 查询并进行调优
2009-11-16 00:00:00 来源:WEB开发网选择访问路径:DB2 做出什么决策?为什么?
语句级调优通常需要为访问生成查询结果集所需的数据找到更好的方法。要完整地扫描整个表吗?要使用索引吗?如果要联结表,应该使用哪种联结方法?回答这些问题就会确定查询的访问路径;调优的目标是找到更好的路径,减少语句的执行时间。
但是,首先需要了解 DB2 优化器选择的路径。可以通过 DB2 EXPLAIN 语句获得这一信息(可以通过查询 EXPLAIN 表以文本形式查看语句的 EXPLAIN 输出,也可以使用 Optimization Service Center for DB2 for z/OS 或 DB2 for LUW 的 Visual Explain 功能以图形形式查看这一信息)。得到 EXPLAIN 输出之后,查看查询的结果集是如何生成的,然后考虑是否可以采用其他访问路径。
为了正确地评估这些访问路径,需要从 DB2 编目中获取关于查询访问的表以及这些表上定义的索引的信息。请记住,优化器使用编目数据决定访问路径。如果编目统计数据不准确,应该使用 RUNSTATS 更新它们。这个简单的步骤可能产生新的访问路径,可能显著改进查询性能。
在查看 DB2 为目标查询选择的访问路径时,问自己一个问题:DB2 应该为这个查询选择不同的访问路径吗?如果您觉得另一个路径更好,那么考虑查询访问的表(及其相关联的索引)是否组织良好。如果编目统计数据是最新的,而 DB2 知道某个索引组织得不好,DB2 就可能决定不使用它。在这种情况下,重新组织索引可能会影响 DB2 的选择,可能产生性能更好的查询访问路径。
您和 DB2 选择的访问路径之所以有差异,可能的原因之一是您了解 DB2 不了解的某些信息。例如,您知道某个列中的数据值不是均匀分布的。如果编目中没有列数据值分布信息,DB2 就会假设值是均匀分布的,这可能导致优化器选择非最优的访问路径。
- ››数据库大型应用解决方案总结
- ››数据结构2--数组
- ››数据源架构模式的活动记录
- ››数据结构C#版线性表(Data Structure)之单链表(Lin...
- ››数据结构C#版线性表(Data Structure)之顺序表(顺序...
- ››DB2 最佳实践: 使用 DB2 pureXML 管理 XML 数据的...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 9.5 SQL Procedure Developer 认证考试 735 准...
- ››DB2 基础: 表空间和缓冲池
- ››DB2 XML 编程,第 1 部分: 理解 XML 数据模型
- ››DB2 pureScale 实战
更多精彩
赞助商链接