SQLServer引擎优化顾问

数据库引擎优化顾问分析一个或多个数据库的工作负荷物理实现。工作负荷是对要优化的一个或多个数据库执行的一组 Transact-SQL 语句。在优化数据库时,数据库引擎优化顾问将使用跟踪文件、跟踪表或 Transact-SQL 脚本作为工作负荷输入。可以在 SQL Server Management Studio 中使用查询编辑器创建 Transact-SQL 脚本工作负荷。可以通过使用 SQL跟踪器(SQL Server Profiler) 中的优化模板来创建跟踪文件和跟踪表工作负荷。
对工作负荷进行分析后,数据库引擎优化顾问会建议您添加、删除、或修改数据库中的物理设计结构。此顾问还可针对应收集哪些统计信息来备份物理设计结构提出建议。
物理设计结构包括聚集索引、非聚集索引、索引视图和分区。数据库引擎优化顾问会推荐一组物理设计结构,以降低工作负荷的开销(由查询优化器估计)。

下面就来使用引擎优化顾问。在这之前,我们打开SQL profiler


首先我们找到这个工具:打开SQL Server Management Studio--工具--找到引擎优化顾问

接下来我们创建个优化顾问会话

SQLServer引擎优化顾问

然后右侧会出现一个窗口,我们先看看常规选项设置

SQLServer引擎优化顾问

工作负荷我们得注意的是,文件格式只能是:sql脚本,xml文件,profiler跟踪文件
这里我们选择的是计划缓存


下面我们来看看优化选项

SQLServer引擎优化顾问

这里我们就上上面说的,索引,索引试图,分区等优化。根据自己的需求可以设置。

右边有一个高级设置,因为格式的问题,没有截图截全,这里我们点进去看看
SQLServer引擎优化顾问
这里注意一个定义建议所用的最大空间,在我们开始分析之前,我们得设置这个值,因为我们开始选择的是计划缓存,需要开辟一个空间来存放这些分析结果、建议和报告

数据库引擎优化顾问具备下列功能:

  • 通过使用查询优化器分析工作负荷中的查询,推荐数据库的最佳索引组合。

  • 为工作负荷中引用的数据库推荐对齐分区或非对齐分区。

  • 推荐工作负荷中引用的数据库的索引视图。

  • 分析所建议的更改将会产生的影响,包括索引的使用,查询在表之间的分布,以及查询在工作负荷中的性能。

  • 推荐为执行一个小型的问题查询集而对数据库进行优化的方法。

  • 允许通过指定磁盘空间约束等高级选项对推荐进行自定义。

  • 提供对所给工作负荷的建议执行效果的汇总报告。

  • 考虑备选方案,即:您以假定配置的形式提供可能的设计结构方案,供数据库引擎优化顾问进行评估。



最后我们点击创建会话旁边的开始分析按钮,稍等片刻就会在优化选项旁边多了一个进度,建议和报告的选项,然后我们可以查看这些建议,甚至强大到我们可以直接复制建议的执行语句直接执行,达到优化的目的。

最最后,我们查看之前打开的跟踪器
SQLServer引擎优化顾问

这里我们发现这个优化顾问太强大了,可以省却我们很多工作量,在一个就是我们尝试所有表都进行优化的时候是特别卡的,也就是说我们在用这个功能的时候可以在测试机或者灰度环境上使用,避免正式环境上的内存溢出等情况
再一个就是我们使用的是计划缓存而不是查询脚本或者是表,这里是因为做优化顾问的时候必须得有负载,如果不实际负载可能有些建议会带来负面的影响

我们可以使用profiler或者是powershell来做负载