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