

# 在 RDS for SQL Server 上配置资源调控器的最佳实践
<a name="ResourceGovernor.BestPractices"></a>

为了控制资源消耗，RDS for SQL Server 支持 Microsoft SQL Server 资源调控器。以下最佳实践有助于您避免常见的配置问题并优化数据库性能。

1. 资源调控器配置存储在 `master` 数据库中。我们建议您始终单独保存资源调控器配置脚本的一个副本。

1. 分类器函数延长了登录处理时间，因此建议避免在分类器中使用复杂的逻辑。过于复杂的函数可能会导致登录延迟或连接超时，包括 Amazon RDS 自动化会话。这可能会影响 Amazon RDS 自动化功能监控实例运行状况的能力。因此，始终建议在生产环境中实现分类器函数之前，先在预生产环境中测试分类器函数。

1. 避免在工作负载组中为 `REQUEST_MAX_MEMORY_GRANT_PERCENT` 设置较高的值（大于 70），因为这会阻止数据库实例为其它并发查询分配足够的内存，从而可能导致内存授予超时错误（错误 8645）。相反，如果将此值设置为过低（小于 1）或设置为 0，则可能会阻止需要内存工作区的查询（例如涉及排序或哈希操作的查询）在用户定义的工作负载组中正常执行。RDS 通过在默认工作负载组上将值限制在 1 到 70 之间，来强制实施这些限制。

1. 要将 tempdb 绑定到资源池，在将内存优化型 tempdb 元数据绑定到池后，池可能会达到其最大设置，并且使用 `tempdb` 的任何查询都可能因内存不足错误而失败。在某些情况下，如果发生内存不足错误，SQL Server 可能会停止。要减少发生这种情况的机会，请将内存池的 `MAX_MEMORY_PERCENT` 设置为较高的值。