数据库引擎调整顾问

原文:数据库引擎调整顾问

  SQL Server提供了一个被称为数据库引擎调整顾问的工具。这个工具帮助为一个给定的工作负载确认一组最优的索引,而不需要对数据库结构或SQL Server内部结构的深入了解。它还能为一小部分有问题的查询建议调整选项。除了好处该工具也有坏处。应该正确地使用。

一、数据库引擎调整顾问机制

  可以直接选择SQL Server 2008=》性能工具=》数据库引擎调整顾问来使用它。

  从Management Studio运行一个查询(选中所需查询,选择查询=》在数据库引擎调整顾问中分析查询),或者从Management Studio=》选择=》数据库引擎调整顾问中运行它。一旦该工具被打开并且连接到一个服务器,将看到如下所示窗口:

  

  数据引擎调整顾问已经连接到一个服务器。从这里,开始概述工作负载以及希望调整的对象。创建一个会话名称是有必要的,可以为会话添加一个用于归档的标注。然后,必须选择一个工作负载(一个文件或一个表),并浏览到合适的位置。工作负载根据启动数据库调整顾问的方式定义。如果从查询窗口启动,将看到一“查询”无线按钮,“文件”和“表”按钮将被禁用。还必须为“工作负载分析”设置定义数据库并最终选择一个需要调整的数据库。

  

  另外,通过“优化选项”选项卡,如下图所示:

  

  选择“限制优化时间”定义希望数据库引擎调整顾问运行的时间,然后定义调整停止的日期和时间。数据库引擎调整顾问运行的时间越长,就越能提供更好的建议。可以选择考虑由数据库引擎调整顾问创建的物理设计结构类型,还可以设置分区策略,这样,调整顾问可以知道是否应该考虑将表和索引分区作为分析的一部分。如果数据和结构不能保证,分区不一定是个理想的结果。最后,可以定义所希望在数据库中保持的物理设计结构。

  更改这些选项将使数据库引擎调整顾问用于改进性能的选择变宽或变窄。

  单击“高级选项”按钮还有更多选项。

  

  这个对话框中,可以限制建议的空间和包含在一个索引中的列数。最后可以确定,新的索引或索引中的改动是作为在线还是离线的索引操作完成。

  一旦适当地定义了所有这些设置,就可以单击“开始分析”按钮开启动数据库调整顾问。所创建的会话保存在所针对的所有服务器实例的msdb数据库中,它显示正在分析的内容和所取得进展的细节。

  

  数据库引擎调整顾问报告:

报告名称 报告描述
Column Access(列访问) 列出工作负载中引用的列和表
Database Access(数据库访问) 列出工作负载中引用的每个数据库和每个数据库工作负载的百分比
Event Frequency(事件频率) 按照发生频率列出工作负载中的所有事件
Index Detail(Current)索引细节(当前) 定义索引及工作负载引用的属性
Index Detail(Recommended)索引细节(建议) 和索引细节相同,但显示数据库引擎调整顾问所建议的索引的信息
Index Usage(Current)索引使用(当前) 列出索引和工作负载引用的百分比
Index Usage(Recommended)索引使用(建议) 和使用索引报告相同,但是出自于建议的索引
Statement Cost(语句开销) 列出在建议实施的情况下每个语句的性能改进
Statement Cost Range(语句开销范围) 将开销的改进分为百分比,以显示可以从给定的每组修改中得到多少益处
Statement Detail(语句细节) 列出工作负载中的语句、开销以及如果建议实施时减少的开销
Statement-to-Index RelationShip(语句与索引的关系) 列出单个语句引用的索引。有当前和建议的版本。
Table Access(表访问) 列出工作负载引用的表
View-to-Table Relationship(视图与表的关系) 列出实物化索引引用的表
Workload Analysis(工作负载分析) 给出工作负载的细节,包括语句数量、开销降低的语句数量、开销保持不变的语句熟练

二、数据库引擎调整顾问实例

  1、调整一个查询

   选中一个查询语句,右键=》数据库引擎优化顾问中分析查询。

   

   设置基础如下:

  

   设置时间:

  

   虽然默认设置为1小时,但是本次建议1分钟就完成了。

   最终建议如下,单击最右侧的定义,SQL Server优化顾问建议的优化如下:

  

   SQL Server优化顾问建议我在Name列上建立一个非聚集索引。对于该查询来说,这是一个完全正确的建议。

  有时候,对于单个查询的优化,SQL Server会建议卸载一些用不到的索引。但是优化应该是针对整个数据库的优化。

  因此,在优化项目里,应该设置数据引擎调整顾问不能卸载任何已有的结构,这个优化选项里把“数据库中保持的物理设计结构”设置“从不保持任何现有的PDS”变为保持现有的PDS。这样就优化顾问就不会建议卸载现有的OBJECT了。

  

  另外,在得到建议之后,可以在操作上面直接操作,评估建议,保存建议,以及应用建议。

  

  单击应用建议:

  

  单击确定后:

  数据库引擎优化顾问将自动将建议执行到SQL Server:

  

   2、调整一个跟踪工作负载

  调整一个跟踪工作负载首先得有一个跟踪文件或跟踪表:

  

   很遗憾,生成的建议居然为空:

  

   这不意味着没有其他可能的改进,只是意味着调整顾问不总是能够发现所有可能的改进。

三、数据库引擎调整顾问的局限性

  数据库引擎调整顾问建议基于输入工作负载。如果输入的工作负载不是实际工作负载的真实表现,那么建议的索引有时候可能对一些在这个工作负载中丢失的查询有负面的影响。

  对于一个生产服务器,应该确保SQL跟踪包含数据库工作负载的一个完整表现。对于大部分数据库应用程序,捕捉完整的一天的跟踪通常包含大部分数据库上执行的查询。其他一些数据库引擎调整顾问所需要考虑的事项/局限性如下:

  • 使用SQL:BatchCompleted事件跟踪输入:输入到数据库引擎调整顾问的SQL跟踪必须包含SQL:BatchCompleted事件;否则,该向导不能确定工作负载中的查询;
  • 工作负载中的查询分布:在一个工作负载中,查询可能以相同的参数值执行多次。以对只执行一次的查询做出较大改进相比,对最常用的查询,即使很小的性能改进都对整个工作负载的性能做出更大的贡献;
  • 索引提示:SQL查询中的索引提示可能阻止数据库引擎调整顾问选择更好的执行计划。该向导将所有SQL查询中使用的索引提示作为建议的一部分。因为这些索引对该表来说可能不是最佳的,所以把工作负载提交到该向导之前删除所有查询中的索引提示;

  

 

时间: 2024-09-20 00:15:35

数据库引擎调整顾问的相关文章

使用数据库引擎优化Tuning Advistor和dta

SQL Server 2005一个我非常欣赏的特性就是有了专门优化程序,据说在2K下面也有,不过我没有用过,估计也不会怎么样. 不说2K还是说说2005的这个好东东. 在Sql Server Management Studio中点击"工具"的"数据库引擎优化顾问"可以启动这个程序,当然也可以通过开始菜单中的SQL2005下面的"性能工具"下来打开程序. 打开该程序后输入正确的用户名密码就可以登录数据库.这里的优化是针对具体SQL语句的优化,所以要

MySQL数据库引擎快速指导

如果你是个赛车手,并且按一下按钮就能够立即更换引擎而不需要把车开到车库里去换,那会是什么感觉呢?MySQL数据库为开发人员所做的就好像是按按钮换引擎:它让你选择数据库引擎,并给你一条简单的途径来切换它. MySQL的自带引擎肯定是够用了,但是在有些情况下,其他的引擎可能要比手头所用更适合完成任务.如果愿意的话,你甚至可以使用MySQL++ API来创建自己的数据库引擎,就像打穿气缸装上自己的化油器.现在让我们来看看你该如何选择引擎,以及如何在可用引擎之间切换. 选择你的引擎 你能用的数据库引擎取

MySQL数据库引擎介绍、区别、创建和性能测试的深入分析_Mysql

数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型INNODB和BERKLEY(BDB),也常常可以使用.如果技术高超,还可以使用MySQL+API自己做一个引擎.下面介绍几种数据库引擎:     ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数.因此,ISAM执

启动服务器SQL Server 2005数据库引擎的方法

SQL2005数据库引擎没有启动的解决方法,SQL2005已经不再像SQL2000那样,单独有一个服务器管理... 数据库引擎没有启动. 有两种启动方式: (1)开始->程序->Microsoft SQL Server 2005->SQL Server 2005外围应用配置器,在打开的界面单击"服务的连接的外围应用配置器",在打开的界面中找到Database Engine,单击"服务",在右侧查看是否已启动,如果没有启动可单击"启动&qu

为进行 ODBC 访问配置 Microsoft Jet 数据库引擎

odbc|访问|数据|数据库 为进行 ODBC 访问配置 Microsoft Jet 数据库引擎    以下各节描述 Microsoft Jet 数据库引擎用于连接 ODBC 数据库的 Microsoft Windows 注册表设置.   连接 ODBC 数据库的 Microsoft Jet 的初始化设置 \HKEY_LOCAL_MACHINE oftware\Microsoft\Jet\4.0\Engines\ODBC 文件夹包含 Microsoft Jet 数据库引擎的初始化设置. 注释  

Dao与Jet数据库引擎

DAO可以访问本地数据库和远程数据库.这里指的本地和远程并不是地理位置上的概念,它们是两个逻辑概念.本地数据库可以在本地计算机(物理)上,也可以不在本地计算机上,而远程计算机也并不局限于远程计算机(物理)上. 本地数据库是通过文件系统访问的数据库,它可以放在本地计算机上,也可以放在网络上,它由应用程序直接操作.而远程数据库只能由DBMS操作,应用程序对它的访问通过DBMS来完成,这样就产生了Client/Server体系结构,应用程序是Client端,DBMS是Server端. Microsof

通过数据库引擎来加速MySQL数据库

如果你是个赛车手,并且按一下按钮就能够立即更换引擎而不需要把车开到车库里去换,那会是什么感觉呢?MySQL数据库为开发人员所做的就好像是按按钮换引擎:它让你选择数据库引擎,并给你一条简单的途径来切换它. MySQL的自带引擎肯定是够用了,但是在有些情况下,其他的引擎可能要比手头所用更适合完成任务.如果愿意的话,你甚至可以使用MySQL++ API来创建自己的数据库引擎,就像打穿气缸装上自己的化油器.现在让我们来看看你该如何选择引擎,以及如何在可用引擎之间切换. 选择你的引擎 你能用的数据库引擎取

SQL Server如何处理到达数据库引擎的查询

当一个查询到达数据库引擎时,SQL SERVER执行两个主要的步骤来产生期望的查询结果.第一步是查询编译,它生成查询计划,第二步执行这个查询计划. SQL SERVER 2005中的查询编译由三个步骤组成:分析.代数化及查询优化.完成这些步骤后,编译器把经过优化的查询计划保存到过程缓存中.在这里,执行引擎把该计划转换为可执行的形式,然后执行其中的步骤以生成查询结果.如果今后再次执行相同的查询或存储过程时,过程缓存已经包含了该计划,则跳过编译步骤,直接重用缓存的计划来执行该查询或存储过程. 关于S

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,