Sql-Server
緩衝池(數據記憶體)的大小是如何計算的?
SQL Server 的緩衝池(數據記憶體)最大大小的計算公式是什麼(當機器只有一個實例時)。
假設機器有 1 GB 的物理記憶體,在這種情況下緩衝池的最大大小是多少?
假設最大伺服器記憶體為 0。
在閱讀有關記憶體授予的資訊時出現了這個問題,我讀到資源信號量可以使用 75% 的緩衝池來進行查詢記憶體授予。那麼自然的問題就是緩衝池是如何計算的。
謝謝
將最大伺服器記憶體設置為 0 時,兩個因素將決定 SQL Server 將使用多少記憶體,從而決定緩衝池將增長多大。
但在討論這些之前,請考慮在沒有任何限制的情況下,SQL Server 會將數據頁讀入記憶體並將其保留在那裡,直到其他東西請求該空間為止。
- 大小如果數據庫將決定緩衝池將增長多大。如果您有一個 20 GB 的數據庫,任何 128 GB 是系統記憶體,緩衝池可能會增長到 20 GB 左右,但不會更大。此時,您的整個數據庫將在記憶體中。
- 限制緩衝池的另一個因素是 Windows。Windows 將允許 SQL 消耗記憶體,而另一個應用程序或服務不需要它。SQL Server 很可能需要額外的記憶體,但 Windows 不同意。也可以讓 Windows 收回記憶體。這一切都取決於伺服器上執行的其他服務和應用程序。
所以,實際上並沒有一個固定的數字。SQL Server 會盡可能地增大它,試圖將整個數據庫放入記憶體中,直到 Windows 說“不”。
至於你應該計劃多大?這個答案可能會有所不同。從名義上的記憶體量開始,比如數據庫大小的 1/8 到 1/4,並監視它是否存在記憶體爭用。如果你看到任何,增加記憶體,直到你沒有。