我最近将一个物理 SQL Server box (2012) 迁移到 ESX (5.1) 只是为了便于管理。它是并且将是服务器上的唯一访客。正如预期的那样,性能受到了轻微影响,大部分情况下只有在启动时才会注意到。这就是我的问题。
我注意到在虚拟化下,缓冲池占用内存比物理内存慢得多。
在 2 天内运行 SQL Server 的物理安装下,分配了所有 120gb 的内存(最大服务器内存)。然而,在管理程序中运行几乎完全相同的设置(我还为来宾提供了全部内存预留),它花了 7 周时间才达到 50GB。这也非常缓慢,就像每天增加 Gb 一样,这转化为几天的缓慢查询。
因此,虽然我在多来宾盒子上看到过这种情况并将其归因于内存压力,但我很困惑为什么它会发生在单个来宾盒子上。我知道 vmware 会压缩和删除内存,但是其中大部分是唯一数据。
所以我的问题是:
1)为什么会这样?我对导致这种情况的确切机制感兴趣。
2) 有没有一种方法可以使用全内存分配来启动 SQL Server?我记得类似 traceflag 的东西,但没能找到 64 位的任何东西。这是必要的吗?
提前致谢。
在重新启动后的前几天,我注意到的另一件事是 PLE 在 500 - 900 范围内保持非常低,随着缓冲池的增长而增加。