Sql-Server

VMWare 下的 SQL Server 緩衝池使用率

  • January 2, 2022

我最近將物理 SQL Server 機器 (2012) 遷移到 ESX (5.1) 只是為了便於管理。它是並且將是伺服器上的唯一來賓。正如預期的那樣,性能受到了邊際影響,大部分情況下僅在啟動時才明顯。我的問題就在這裡。

我注意到,在虛擬化下,緩衝池佔用的記憶體要比它的物理對應物慢得多。

在 2 天內執行 SQL 伺服器的物理安裝下,已分配所有 120gb 的記憶體分配(最大伺服器記憶體)。然而,在虛擬機管理程序中執行幾乎完全相同的設置(我還為來賓提供了完全保留的記憶體),需要 7 週的時間才能達到 50gb。這也非常緩慢,例如每天增加 Gb,這轉化為幾天的緩慢查詢。

因此,雖然我在多客盒上看到了這種情況並將其歸因於記憶體壓力,但我對為什麼它會發生在單個客盒上感到困惑。我知道 vmware 會壓縮和刪除記憶體,但是其中大部分是唯一數據。

所以我的問題是:

1)為什麼會發生這種情況?我對導致這種情況的確切機制感興趣。

  1. 有沒有一種方法來啟動 SQL Server 是完整的記憶體分配?我記得類似跟踪標誌之類的東西,但找不到任何 64 位的東西。這是必要的嗎?

提前致謝。


在重新啟動後的前幾天我注意到的另一件事是 PLE 在 500 - 900 範圍內保持非常低,這會隨著緩衝池的增長而增加。

跟踪標誌 834 可以允許在啟動時為 x64 機器分配最大記憶體量。以下部落格有更多詳細資訊,但這裡是基礎知識:

企業版需要安裝 8GB RAM 或更多需要存在 記憶體中的鎖定頁面需要打開。

關聯

閱讀全文,因為這會導致啟動時間更長(或啟動失敗)。一個重要的問題是它需要分配一塊連續的記憶體,我不確定這將如何在 VMWare 上工作。此外,如果主機中的物理記憶體為 128GB,我會進一步減少最大伺服器記憶體,以確保有足夠的空間供 VMWare 執行此操作。

引用自:https://dba.stackexchange.com/questions/29393