使用内存配置选项优化服务器性能

使用 Microsoft SQL Server 的内存管理器组件就无需手动管理 SQL Server 中的可用内存。SQL Server 在启动时,将根据操作系统和其他应用程序当前使用的内存量,动态确定应分配的内存。当计算机和 SQL Server 上的负荷更改时,分配的内存也会更改。有关详细信息,请参阅内存体系结构

下列服务器配置选项可用于配置内存使用并影响服务器性能:

  • min server memory

  • max server memory

  • max worker threads

  • index create memory

  • min memory per query

min server memory 服务器配置选项可用于确保 SQL Server 在达到该阈值后不会将内存释放到小于配置的最小服务器内存。可以根据 SQL Server 的大小及活动将该配置选项设置为特定的值。如果选择设置此值,请将其设置为某个合理的值以便确保操作系统不会向 SQL Server 请求过多的内存,因为这样会影响 SQL Server 性能。

maxservermemory 服务器配置选项可用于指定在 SQL Server 启动及运行时,能够为其分配的最大内存量。如果知道有多个应用程序与 SQL Server 同时运行,并且要保证这些应用程序有足够的内存运行,则可以将此配置选项设置为特定值。如果这些其他应用程序(如 Web 服务器或电子邮件服务器)只根据需要请求内存,SQL Server 将根据需要为它们释放内存,因而不要设置 maxservermemory 服务器配置选项。然而,应用程序通常在启动时不加选择地使用可用内存,而如果需要更多内存也不请求。如果具有这种行为方式的应用程序与 SQL Server 同时运行在同一台计算机上,请设置 maxservermemory 服务器配置选项的值,确保应用程序所需的内存不由 SQL Server 分配。

请不要将 minservermemorymaxservermemory 服务器配置选项设置为相同的值,这样做会使分配给 SQL Server 的内存量固定。动态内存分配可以随时间提供最佳的总体性能。有关详细信息,请参阅服务器内存选项

最大工作线程数服务器配置选项可指定用以支持用户连接到 SQL Server 的线程数。如果最大工作线程数的默认值是 0,则允许 SQL Server 在启动时自动配置工作线程数。对于大多数系统而言,该设置为最佳设置。但是,根据您的系统配置不同,将最大工作线程数设置为特定值有时会提高性能。有关详细信息,请参阅 max worker threads 选项

注意注意

SQL Server 2000 中最大工作线程数的默认设置是 255。将 SQL Server 2000 数据库引擎实例升级到高版本会保留最大工作线程数的配置值。升级时,建议将新实例的最大工作线程数的值更改为 0,以允许数据库引擎计算最佳线程数。

索引创建内存服务器配置选项可控制创建索引时排序操作所使用的内存量。在生产系统上创建索引通常是不常执行的任务,通常安排在非高峰时段执行。因此,不常创建索引且在非峰值时间时,增加该值可提高索引创建的性能。但是,最好将 minmemoryperquery 配置选项保持在一个较低的值,这样即使所有请求的内存都不可用,索引创建作业仍能开始。有关详细信息,请参阅 index create memory 选项

minmemoryperquery 服务器配置选项可用于指定为执行查询分配的最小内存量。当系统内有许多查询并发执行时,增大 min memory per query 的值有助于提高消耗大量内存的查询(如大型排序和哈希操作)的性能。但是,不要将 minmemoryperquery 服务器配置选项设置得太高,尤其是在非常繁忙的系统上,因为查询将不得不等到能确保占有所请求的最小内存、或直到时间超过 query wait 服务器配置选项内所指定的值。如果可用内存比执行查询所需的指定最小内存多,则只要查询能对多出的内存加以有效的利用,就可以使用多出的内存。有关详细信息,请参阅 min memory per query 选项query wait 选项