服务器配置:每个查询的最小内存

适用范围:SQL Server

本文介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中配置 min memory per query 服务器配置选项。 该 min memory per query 选项指定要为查询执行分配的最小内存量(以 KB 为单位)。 这也称为最小内存授予。 例如,如果 min memory per query 设置为 2,048 KB,则保证查询至少获得那么多的总内存。 默认值为 1,024 KB。 最小值为 512 KB,最大值为 2,147,483,647 KB (2 GB)。

限制

min memory per query 的量优先于 index create memory 选项。 如果改变这两个选项,并且索引创建内存小于每次查询占用的最小内存,则将收到警告消息,但仍会设置值。 在查询执行期间会收到另一个类似警告。

建议

此选项是一个高级选项,仅应由有经验的数据库管理员或认证的 SQL Server 专业人员更改。

SQL Server 查询处理器尝试确定要分配给查询的最佳内存量。 min memory per query 选项允许管理员指定任何单个查询收到的最小内存量。 如果查询需要对大量数据执行哈希和排序操作,则这些查询获得的内存通常比该选项指定的最小内存多。 增加每个查询的最小内存值可能会提高一些中小型查询的性能,但这样做可能会导致内存资源的竞争增加。 min memory per query 选项包括为排序操作分配的内存。

不要将每个查询服务器配置选项的最小内存设置得太高,尤其是在非常繁忙的系统上,因为查询必须等待1 ,直到可以保护请求的最小内存,或者直到超出查询等待服务器配置选项中指定的值。 如果可用内存多于执行查询所需的指定最小值,则如果查询可以有效地使用内存,则允许查询使用额外的内存。

1 在此方案中,等待类型通常是 RESOURCE_SEMAPHORE。 有关详细信息,请参阅 sys.dm_os_wait_stats

权限

默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要使用两个参数执行 sp_configure 来更改配置选项或运行 RECONFIGURE 语句,用户必须拥有 ALTER SETTINGS 服务器级别权限。 ALTER SETTINGS 权限由 sysadmin 和 serveradmin 固定服务器角色隐式拥有。

使用 SQL Server Management Studio

  1. 在对象资源管理器中,右键单击服务器并选择 “属性”

  2. 选择 “内存 ”节点。

  3. 在“每个查询的最小内存”框中,输入用于执行查询的最小内存量(以千字节为单位)。

使用 Transact-SQL

  1. 连接到 数据库引擎。

  2. 在标准栏上,选择“新建查询”。

  3. 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 本示例演示如何使用 sp_configuremin memory per query 选项的值设置为 3500 KB。

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'min memory per query', 3500;
    GO
    
    RECONFIGURE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

跟进:配置每个查询的最小内存选项后

该设置将立即生效,无需重新启动服务器。