监视内存使用量
定期监视 SQL Server 的实例以确认内存使用量在正常范围内。
若要监视内存不足的情况,请使用下列对象计数器:
内存:Available Bytes
内存:Pages/sec
Available Bytes 计数器指示当前有多少内存(以字节为单位)可供进程使用。 Pages/sec 计数器指示由于页错误而从磁盘取回的页数,或由于页错误而写入磁盘以释放工作集空间的页数。
Available Bytes 计数器的值低表示计算机总内存不足或应用程序没有释放内存。 Pages/sec 计数器的比率高表示分页过多。 监视 Memory: Page Faults/sec 计数器可以确保磁盘活动不是由分页导致的。
分页率偏低(以及由此产生的页错误)是正常的,即使计算机有大量的可用内存。 Microsoft Windows 虚拟内存管理器 (VMM) 在剪裁 SQL Server 和其他进程的工作集大小时会收走这些进程的页。 此 VMM 活动会导致页错误。 要确定分页过多是由 SQL Server 还是由其他进程导致,请监视进程:Page Faults/sec 计数器(针对 SQL Server 进程实例)。
有关解决分页过多的详细信息,请参阅 Windows 操作系统文档。
默认情况下,SQL Server 将根据可用系统资源动态改变其内存要求。 如果 SQL Server 需要更多内存,它会查询操作系统以确定是否有可用的空闲物理内存,然后使用可用内存。 如果 SQL Server 当前不需要分配给它的内存,它会将内存释放给操作系统。 但是,您可以覆盖此选项通过 min server memory 和 max server memory 服务器配置选项来动态使用内存。 有关详细信息,请参阅服务器内存选项。
若要监视 SQL Server 使用的内存量,请检查下列性能计数器:
进程:Working Set
SQL Server:缓冲区管理器:缓冲区缓存命中率
SQL Server:缓冲区管理器:数据库页
SQL Server:内存管理器:Total Server Memory (KB)
Working Set 计数器显示进程所用的内存量。 如果此内存量一直小于 min server memory 和 max server memory 服务器选项设置的内存量,则 SQL Server 被配置为使用过多内存。
Buffer Cache Hit Ratio 计数器仅适用于应用程序。 但是,90% 或更高的命中率是令人满意的。 添加更多内存,直到该值始终大于 90%。 大于 90% 的值表示数据缓存满足所有数据请求中 90% 以上的请求。
如果 Total Server Memory (KB) 计数器值相对于计算机的物理内存量而言一直很高,则可能表示需要更多内存。
以下查询返回有关当前分配内存的信息。
SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;