我正在阅读“SQL Server 2008查询性能调优蒸馏”一书,并发现其在某些情况下对性能指标的描述有点模糊。我将列出它涵盖的所有指标,以及我对每个指标的感觉。我想在必要时分享澄清。正如我的意见所示,主要是第2,第6和第7项我正在寻求帮助。
target server memory
和max server memory
- 控制SQL服务器内存使用量的总和?是因为“total”是针对所有数据库实例组合的,“max”是针对每个单独的数据库吗?我有一个整体问题,可能与第7项有关,当每个数据库实例配置为最大内存使用量(几乎)总计所有可用物理内存时,会发生什么?我认为SQL Server不会向它所托管的每个实例授予那么多,并且会根据需要平衡自己?它比那复杂吗?
答案 0 :(得分:1)
唯一的问题是为什么页面可能会在内存中从一个位置交换到另一个位置(软错误)。
软故障并未真正移动页面。流程工作集将被连续修剪,页面将处于“待机”状态。它们保留了相同的物理位置,但它们在内核中的描述符被标记为“待机”。引用此页面的进程将导致“软故障”,这意味着页面描述符变为“已修复”,页面将返回到进程工作集。在修整和软故障的整个过程中,从未实际移动到物理RAM中的页面内容。
缓冲区高速缓存命中率:新请求的内存立即可用的频率
不,这意味着有多少 DB 页面的请求在内存中找到了该页面,并且没有必要发出IO来从磁盘中获取它。
内存授予待处理:“SQL Server内存中内存授予的待处理进程数”。
这是一个完全不同的主题。请在此处阅读:Understanding SQL server memory grant。
目标/服务器总内存
阅读SQLOS's memory manager and SQL Server's Buffer Pool。有点旧,但仍然非常准确,特别是在SQL Server 2012之前。
当每个数据库实例配置为最大内存使用量(几乎)总计所有可用物理内存的内容时会发生什么
这是SQL Server的预期操作模式。它旨在捕获主机上的全部内存,然后自行管理它。这就是为什么没有指示托管任何其他进程以及SQL Server(例如,没有IIS,没有Exchange,没有AD域控制器,没有SSIS,没有RS,没有AS等)。这也是为什么最好每个主机托管一个实例。