IFTABLE-COL4>:VALUE
GETNEXTRESULTROW
技巧5:使用常量和字面值,假如值在以后的3年中不改变(对于静态查询): DB2优化器对所有不均匀的分类统计都充分的使用,并为任何一个列统计提供了不同领域范围内的值,尤其当没有主机变量在谓词中被发现时,(WHERECOL5>'X')。主机变量的目的是使一个事务能适应一个可变化的变量;当一个用户请求输入这个值的时候是最经常被使用的。主机变量不需要重新绑定一个程序,当这个变量每一次改变的时候。这种可延伸性能得到优化器准确的耗费。当主机变量刚被发现,(WHERECOL5>:hv5),优化器使用以下的图表来评估过滤器要素,而不是使用目录统计: 图4:过滤器要素 列的基数性越高,则谓词的过滤器要素就越低(保留部分行的猜测)。多数时候,这种评估有助于优化器对适当存取路径的选取。然而,有时谓词的过滤器要素远离实际。这就是通常需要对存取路径进行调优的时候。 上一页1234567下一页 解决方案 QuestCentralforDB2是一个集成的控制台,可以提供核心功能,DBA(数据库治理员)需要执行他们日常的数据库治理任务,空间治理,SQL调优和分析,并且可以进行性能诊断监视。QuestCentralforDB2是由DB2软件专家撰写的,并且提供具丰富的功能,以利于视图化的用户界面,并且支持在Unix,linux,和windows主机上运行DB2数据库。DB2的客户不再被要求用独立的工具维护和使用他们的主机和分布式的DB2系统。 QuestCentral的SQL调优组件提供一个完整的SQL调优环境。QuestCentral是唯一可以提供完整的SQL调优环境的针对DB2可用的产品。这个环境包括以下部分: 1.调优实验室:通过场景的使用,一个单独的SQL语句能够被改进很多次。然后这些场景能够马上被比较以确定哪个SQL语句提供了最有效率的存取路径。 2.比较:您马上可以看出对于SQL语句修改的性能改变效果。由于比较多个场景,您能看到对CPU的效果,消耗的时间,I/O和其他更多的统计。另外数据的比较将保证您的SQL语句返回相同的数据子集。 3.建议:由SQL调优组件提供的建议,将会发现所有的在白皮书指定的条件等等。另外,假如一个新场景可以利用,SQL调优组件甚至将会重写SQL,并综合选择的建议。 4.存取路径和对应的统计:在SQL的上下文中,对于DB2存取路径,所有适合的统计应被显示出来。采取推测以设法理解为什么选择一个非凡的存取计划。 QuestCentralforDB2健壮的功能显现了上述SQL调优中的技巧以及更多。这篇白皮书剩余的部分将证实QuestCentral是由更丰富和更透彻的知识恰当的组成的。QuestCentral不仅可以提高您的SQL语句效率,更可以帮助您全面的提升数据库的性能。上面描述的各种调优技巧都被QuestCentral所包括。 上一页1234567下一页 解决的技巧1:核实特定提供的统计: 一旦一条SQL语句在QuestCentral中被描述,建议栏会提供一整套建议,包括当没有RUNSTATS时也可以发现的能力。QuestCentral一直以坚定的决心来探究这类建议。每一条建议都有相对应的"建议操作"。这种建议操作会指导如何矫正建议发现的问题。这将会打开一个新的场景由被重写的SQL或以促进对象分析的脚本组成。在这个例子中,建议显示,统计的缺失和相对应的建议操作将建立一个脚本,它包含RUNSTATS命令,为了在建议操作的窗口中选择任何一个对象。 图5:SQL调优的组件鉴别所有对象缺失的统计, 并且能够生成必要的命令对所有选择对象的统计进行更新。 另外,QuestCentralSpace的治理能够自动的收集、维护和检验在表空间里的统计及表和索引等级。以下的例子显示了在数据库里所有表空间里的统计检验报告。 图6:QuestCentral提供了一套轻易使用的图形界面,以促进RUNSTATS处理的自动化。 解决的技巧2:尽可能的提升阶段2和阶段1的谓词: SQL的调优组件将列出所有的谓词并指出那些谓词是否是"Sargable"或"Non-Sargable"。另外,各个谓词都将被检查,以确定它是否具有索引存取的资袼。这种单独的建议可以解决响应时间的问题和在谓词重写的期间内得到某些成果。在下面的例子中,一条查询被看作non-sargable和non-indexable(阶段2)。这条最初的查询被输入在一个谓词间。一个新场景被打开了并且谓词被重写使用大于,小于符号。这种比较确定了查询重写对性能方面的影响。 上一页1234567下一页 图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显示每个谓词的过滤器要素 上一页1234567 新闻热点
疑难解答