数据库引擎调整顾问

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,独享型 2核4GB
简介: 原文:数据库引擎调整顾问  SQL Server提供了一个被称为数据库引擎调整顾问的工具。这个工具帮助为一个给定的工作负载确认一组最优的索引,而不需要对数据库结构或SQL Server内部结构的深入了解。
原文: 数据库引擎调整顾问

  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查询中使用的索引提示作为建议的一部分。因为这些索引对该表来说可能不是最佳的,所以把工作负载提交到该向导之前删除所有查询中的索引提示;

  

 

相关实践学习
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
12天前
|
运维 Cloud Native 安全
荣誉加身!陶建辉被授予 GDOS 全球数据库及开源峰会荣誉顾问
**第二十三届 GOPS 全球运维大会暨 XOps 峰会在京召开,聚焦开源数据库与技术创新。涛思数据CEO陶建辉获GDOS全球数据库及开源峰会荣誉顾问称号,因其在TDengine数据库的开源与研发上的贡献。TDengine,高性能时序数据库,已在多个行业广泛应用,推动数据库技术发展。陶建辉将持续为开源生态和行业创新贡献力量。
19 0
|
SQL 数据库 Windows
SQL Server Profiler和数据库引擎优化顾问
原文:SQL Server Profiler和数据库引擎优化顾问  简介           说到Sql的【性能工具】真是强大,SQL Server Profiler的中文意思是SQL Server事件探查,这个到底是做什么用的呢?我们都知道探查的意思大多是和监视有关,其实这个SQL Server Profiler就是一个Sql的监视工具,可以具体到每一行Sql语句,每一次操作,和每一次的连接。
1471 0
|
9天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
7天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
921 6
Mysql 数据库主从复制
|
7天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
13天前
|
XML Java 关系型数据库
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
Action:Consider the following: If you want an embedde ,springBoot配置数据库,补全springBoot的xml和mysql配置信息就好了
|
12天前
|
关系型数据库 MySQL 数据库
关系型数据库mysql数据增量恢复
【7月更文挑战第3天】
127 2
|
12天前
|
关系型数据库 MySQL Shell
关系型数据库mysql数据完全恢复
【7月更文挑战第3天】
83 2