|
|
Blogs
Toad World blogs are a mix of insightful how-tos from Quest experts as well as their commentary on experiences with new database technologies. Have some views of your own to share? Post your comments! Note: Comments are restricted to registered Toad World users.
Do you have a topic that you'd like discussed? We'd love to hear from you. Send us your idea for a blog topic.
Feb
22
Written by:
中文技术资料库
2/22/2012 1:23 PM
SQL Optimizer 8.0有些什么新功能?
改进了SQL重写引擎
我们为重写引擎构建了多条新的规则和调整了一些配额。结果是真是太棒了。以前很多不能优化的SQL 语句现在用新引擎都可以优化了。这是重写引擎的一个显著的改进。
由于SQL Server的内部SQL优化器对于执行计划的选择不如Oracle的语法敏感,这就降低了我们重写调优在SQL Server平台的效率。为了解决这个问题,我们研发出了一条新的提示组合规则。这条规则允许你尝试更多的语法和提示组合。我的测试表明它新产生的执行计划的质量有显著的提高。此外,一些正在研发中的规则在测试版本还不可用到,这些规则可能帮助加快某些环境中的含有“NOT IN” and “NOT EXISTS” 的SQL语句。在产品发布后我将会做详细的解说。
计划控制(Plan Control)
在过去的几个月中,我们用了大量的资源开发了一个新的优化模块叫做“Plan Control”。它是一项新的SQL调优技术,无需修改源代码,就可以优化SQL Server的SQL语句。
计划控制采用了SQL Server 2005引入的计划指南 (Plan Guides) 功能。你可以使用这一功能优化一条SQL语句的执行计划并且可以在无需修改源代码的情况下部署计划指南。这个特性对于那些你没有权限接触到源代码的第三方应用程序特别有用。
首先,SQL Optimizer分析你的SQL语句后产生执行计划的替代品。然后,SQL Optimizer应用一组SQL Server的提示(Hints)和字面常量值参数化到每条SQL以产生可供选择的查询计划。一旦SQL Optimizer完成了这个过程,你可以运行这些替代品取回运行时统计信息,比较这些替代品就可以为你的数据库环境识别出最好的那一个。然后你可以部署选定的计划指南到数据库。
在Sybase和Oracle平台,我们已经研发出的相似的计划控制SQL调优功能,但是SQL Server的计划控制功能是所有平台中最复杂的一个。这是由于SQL Server的计划指南特性的复杂性;一条部署过的SQL语句的匹配依赖于嵌入SQL语句的来源。例如,SQL可能来自于一个T-SQL批处理,内嵌在数据库对象(存储过程)的一条SQL,或者来自于某一个客户端的一条单独的SQL语句。此外,那些字面常量值参数化模板计划指南(好像Oracle的自适应游标共享),“Optimize For”和这类计划指南对于开发人员来说也是个难懂的概念。我想很多开发人员很难手工使用好这个复杂的SQL Server计划指南特性。请试用我们的测试版,你无需理解计划指南复杂的概念并且能够轻而易举地进行优化和部署一条SQL语句的计划指南。
下面是Plan Control这个新模块的一些截图:

从SQL Optimize的开始页面中你可以选择Plan Control。

Plan Control的SQL优化的功能跟SQL Rewrite类似;在测试运行后,你可以选择部署某一个计划指南。

这是一个解释计划控制如何应用计划指南概念的例子;在以后的文章中我将会讲述更多的细节。
|
|