

# 使用 Database Engine Tuning Advisor 分析 Amazon RDS for SQL Server 数据库实例上的数据库工作负载
<a name="Appendix.SQLServer.CommonDBATasks.Workload"></a>

Database Engine Tuning Advisor 是 Microsoft 提供的客户端应用程序，用于分析数据库工作负载，并根据您运行的查询种类对 Microsoft SQL Server 数据库提供最佳索引集建议。像 SQL Server Management Studio 一样，在连接到运行 SQL Server 的 Amazon RDS 数据库实例的客户端计算机上运行 Tuning Advisor。客户端计算机可以是在您自有网络内部运行的本地计算机，也可以是在您的 Amazon RDS 数据库实例所在区域中运行的 Amazon EC2 Windows 实例。

本部分介绍如何捕获工作负载供 Tuning Advisor 分析。对于捕获工作负载，这是一个首选过程，因为 Amazon RDS 限制了主机对 SQL Server 实例的访问。有关更多信息，请参阅 Microsoft 文档中的 [Database Engine Tuning Advisor](https://docs.microsoft.com/en-us/sql/relational-databases/performance/database-engine-tuning-advisor)。

要使用 Tuning Advisor，必须为其提供所谓的工作负载。工作负载是一系列 Transact - SQL 语句，它们是针对您要优化的一个或多个数据库上运行的。在优化数据库时，Database Engine Tuning Advisor 会以工作负载输入的形式使用跟踪文件、跟踪表、Transact - SQL 脚本或 XML 文件。在使用 Amazon RDS 时，工作负载可能是客户端计算机上的文件，也可能是客户端计算机可访问的 Amazon RDS for SQL Server 数据库上的数据库表。该文件或表必须包含对您要优化的数据库进行查询的命令，并且这些命令必须是适合重新执行的格式。

为了让 Tuning Advisor 实现最大的效率，工作负载应尽可能真实。您可以通过对数据库实例执行跟踪来生成工作负载文件或表。运行跟踪时，可以在数据库实例上模拟负载，也可以用正常负载运行应用程序。

跟踪方式有两种：客户端跟踪和服务器端跟踪。客户端跟踪的设置比较容易，并且可以在 SQL Server Profiler 中实时观察捕获到的跟踪事件。服务器端跟踪的设置比较复杂，并需要编写一些 Transact - SQL 脚本。此外，因为跟踪会写入 Amazon RDS 数据库实例上的文件中，所以跟踪会占用存储空间。请务必跟踪正在运行的服务器端跟踪所占用的存储空间大小，这点非常重要，因为数据库实例可能会进入存储已满状态，从而会在存储空间不足时不再可用。

对于客户端跟踪，在 SQL Server Profiler 捕获到足量的跟踪数据后，您可以通过以下方式生成工作负载文件：将跟踪保存到本地计算机上的文件中，或保存到客户端计算机可用的数据库实例上的数据库表中。使用客户端跟踪的主要缺点是，在高负载情况下，跟踪可能无法捕获到所有查询。这可能会降低 Database Engine Tuning Advisor 执行的分析的有效性。如果您需要在高负载下运行跟踪并要确保可捕获到跟踪会话期间的所有查询，则应使用服务器端跟踪。

对于服务器端跟踪，您必须将数据库实例上的跟踪文件存储到合适的工作负载文件，您也可以在完成跟踪后将跟踪保存到数据库实例上的表中。您可以使用 SQL Server Profiler 将跟踪保存到本地计算机上的文件，或从数据库实例的跟踪表中读取 Tuning Advisor。