Sql-Server

緩衝池(數據記憶體)的大小是如何計算的?

  • May 15, 2022

SQL Server 的緩衝池(數據記憶體)最大大小的計算公式是什麼(當機器只有一個實例時)。

假設機器有 1 GB 的物理記憶體,在這種情況下緩衝池的最大大小是多少?

假設最大伺服器記憶體為 0。

在閱讀有關記憶體授予的資訊時出現了這個問題,我讀到資源信號量可以使用 75% 的緩衝池來進行查詢記憶體授予。那麼自然的問題就是緩衝池是如何計算的。

謝謝

將最大伺服器記憶體設置為 0 時,兩個因素將決定 SQL Server 將使用多少記憶體,從而決定緩衝池將增長多大。

但在討論這些之前,請考慮在沒有任何限制的情況下,SQL Server 會將數據頁讀入記憶體並將其保留在那裡,直到其他東西請求該空間為止。

  1. 大小如果數據庫將決定緩衝池將增長多大。如果您有一個 20 GB 的數據庫,任何 128 GB 是系統記憶體,緩衝池可能會增長到 20 GB 左右,但不會更大。此時,您的整個數據庫將在記憶體中。
  2. 限制緩衝池的另一個因素是 Windows。Windows 將允許 SQL 消耗記憶體,而另一個應用程序或服務不需要它。SQL Server 很可能需要額外的記憶體,但 Windows 不同意。也可以讓 Windows 收回記憶體。這一切都取決於伺服器上執行的其他服務和應用程序。

所以,實際上並沒有一個固定的數字。SQL Server 會盡可能地增大它,試圖將整個數據庫放入記憶體中,直到 Windows 說“不”。

至於你應該計劃多大?這個答案可能會有所不同。從名義上的記憶體量開始,比如數據庫大小的 1/8 到 1/4,並監視它是否存在記憶體爭用。如果你看到任何,增加記憶體,直到你沒有。

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