3 .6 .3 内存问题诊断
2018-06-29 15:20 笑一笑十年少!!! 阅读(328) 评论(0) 编辑 收藏 举报3 .6 .3 内存问题诊断
遇到内存问题时,首先要检查SQL Server的内存使用情况,可以使用性能监视器或者 DMV来查看。通过性能监视器可以监控下面的计数器。
□ Granted Workspace Memory (K B ),当前查询正在使用的总内存大小。 □ Maximum Workspace Memory (KB), SQL Server标记预留给某个查询的总内存大小c □ Memory Grants Pending,正在队列中的内存grants数量。 □ Memory Grants Outstanding,正在使用的内存 grants 数量。
这里说明几个术语。
□ Workspace : 指在查询过程中,进行hash和排序操作时,临时存储数据的结果集所 用的内存。如果在执行计划中看到出现了 hash'或者sort操作符,那么就表示会使用 这部分的内存完成处理。
□ Memory Grants : 已经分配给查询的那部分内存。可以用过sys.dm_exec_query_ memory grants 查看。
另外,RESOURCE_SEMAPHORE等待状态是针对memory grants的,所以如果在
sys.dm_os_wait_stats这个DMV中看到这个等待类型存在很久,并且处于前几位,可能需 要检查内存是否足够快。如果内存授予(memory grants)太久,会导致查询超时,可以使
用 SQL trace或者执行计划查看是否存在hash或者sort warning这些信息。