使用内存配置选项优化服务器性能
使用 Microsoft SQL Server 2005 的内存管理器组件就无需手动管理 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 分配。
请不要将 minservermemory 和 maxservermemory 服务器配置选项设置为相同的值,这样做会使分配给 SQL Server 的内存量固定。动态内存分配可以随时间提供最佳的总体性能。有关详细信息,请参阅服务器内存选项。
maxworkerthreads 服务器配置选项可用来指定支持用户连接到 SQL Server 的线程数。255 这一默认设置对某些配置可能稍微偏高,具体情况取决于并发用户数。由于每个工作线程都已分配,因此即使线程没有正在使用(因为并发连接比分配的工作线程少),可由其他操作(如缓冲区高速缓存)更好地利用的内存资源也可能是未使用的。一般情况下,应将该配置值设置为并发连接数,但不能超过 32727。并发连接与登录连接不同。SQL Server 实例的工作线程池只要求足够大,以便为同时正在该实例中执行批处理的用户连接提供服务。如果增加工作线程的数量超过默认值,会降低服务器性能。有关详细信息,请参阅 max worker threads 选项。
indexcreatememory 服务器配置选项可控制创建索引时排序操作所使用的内存量。在生产系统上创建索引通常是不常执行的任务,通常安排在非高峰时段执行。因此,不常创建索引且在非峰值时间时,增加该值可提高索引创建的性能。但是,最好将 minmemoryperquery 配置选项保持在一个较低的值,这样即使所有请求的内存都不可用,索引创建作业仍能开始。有关详细信息,请参阅 index create memory 选项。
minmemoryperquery 服务器配置选项可用于指定为执行查询分配的最小内存量。当系统内有许多查询并发执行时,增大 min memory per query 的值有助于提高消耗大量内存的查询(如大型排序和哈希操作)的性能。但是,不要将 minmemoryperquery 服务器配置选项设置得太高,尤其是在非常繁忙的系统上,因为查询将不得不等到能确保占有所请求的最小内存、或直到时间超过 query wait 服务器配置选项内所指定的值。如果可用内存比执行查询所需的指定最小内存多,则只要查询能对多出的内存加以有效的利用,就可以使用多出的内存。有关详细信息,请参阅 min memory per query 选项和 query wait 选项。
请参阅
任务
如何设置最小查询内存 (SQL Server Management Studio)
概念
监视内存使用量
min server memory 和 max server memory 的影响
管理大型数据库的内存