0

我正在阅读“SQL Server 2008 Query Performance Tuning Distilled”一书,发现它对 perf mon 指标的描述在某些情况下有点含糊。我将列出它涵盖的所有指标,以及我对每个指标的理解。我想在必要时进行澄清。正如我的评论所暗示的,主要是我正在寻求帮助的项目#2、6 和 7。

  1. 可用字节数:可用物理内存。不言自明
  2. 页面/秒和页面错误/秒:99% 清除。唯一的问题是为什么页面可能会在内存中从一个位置交换到另一个位置(软故障)。
  3. Buffer Cache Hit Ratio:新请求的内存立即可用的频率。似乎很清楚,虽然可能名字不好。我想知道它是否应该被称为“缓冲池免费命中率”。
  4. Page Life Expectancy:此缓冲池缓存指标由缓存命中频率和可用内存控制。似乎比较清楚。
  5. Lazy writes/sec:将脏缓冲区写入磁盘的速率。似乎比较清楚。
  6. Memory Grants Pending:“SQL Server 内存中等待内存授予的进程数”。奇怪的。不应该只有一个进程与 SQL Server 内存相关联吗?不清楚!
  7. 目标/总服务器内存:据说“如果总服务器内存远小于目标服务器内存……那么可能是最大服务器内存配置参数设置得太低。” 有点不清楚。为什么有两个设置 -target server memorymax server memory- 控制 SQL Server 内存使用量的总和?是因为“total”是针对所有数据库实例的组合,而“max”是针对每个单独的数据库吗?

我的一个总体问题可能与第 7 项有关,当每个数据库实例配置为(几乎)所有可用物理内存的最大内存使用量时会发生什么?我认为 SQL Server 不会向它托管的每个实例授予那么多,并且会根据需要自行平衡?它比这更复杂吗?

4

1 回答 1

1

唯一的问题是为什么页面可能会在内存中从一个位置交换到另一个位置(软故障)。

软故障不会真正移动页面。进程工作集被连续修剪,页面处于“待机”状态。它们保留完全相同的物理位置,但它们在内核中的描述符被标记为“备用”。引用此页面的进程将引发“软故障”,这意味着页面描述符得到“固定”并且页面返回到进程工作集中。在整个修整和软故障的过程中,从来没有真正移动过物理 RAM 中的页面内容。

Buffer Cache Hit Ratio:新请求内存立即可用的频率

不,这意味着有多少对DB页面的请求在内存中找到了该页面,并且不必发出 IO 来从磁盘获取它。

Memory Grants Pending:“在 SQL Server 内存中等待内存授予的进程数”。

这是一个完全不同的话题。阅读此处:了解 SQL 服务器内存授予

目标/总服务器内存

阅读SQLOS 的内存管理器和 SQL Server 的缓冲池。有点旧,但仍然相当准确,特别是 SQL Server 2012 之前的版本。

当每个数据库实例配置为最大内存使用量(几乎)总计所有可用物理内存时会发生什么

这是 SQL Server 的预期操作模式。它旨在捕获主机上的所有内存,然后自行管理。这就是为什么没有指示与 SQL Server 一起托管任何其他进程(例如,没有 IIS、没有 Exchange、没有 AD 域控制器、没有 SSIS、没有 RS、没有 AS 等)。这也是为什么最好为每台主机托管一个实例的原因。

于 2012-08-14T13:38:12.237 回答