locks 選項
您可以使用 locks 選項來設定可用鎖定的最大數目,從而限制 Database Engine 用於鎖定的記憶體數量。預設值為 0,允許 Database Engine 根據變更系統需求,動態配置與取消配置鎖定結構。
重要事項 |
---|
未來的 Microsoft SQL Server 版本將移除這項功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。 |
如果伺服器啟動時是將 locks 設為 0,則鎖定管理員會從 Database Engine 取得足夠的記憶體,以供 2,500 個鎖定結構的初始集區使用。當鎖定集區耗盡時,就會再為集區取得額外的記憶體。
一般而言,如果鎖定集區所需的記憶體多於 Database Engine 記憶體集區可提供的數量,而且還有更多的電腦記憶體可用 (尚未達到 max server memory 臨界值) 的話,Database Engine 會動態配置記憶體,以滿足鎖定要求。然而,如果配置該記憶體會造成作業系統層級的分頁 (例如,如果另一個應用程式與 SQL Server 執行個體在同一部電腦上執行而且它正在使用該記憶體),就無法再配置鎖定空間。動態鎖定集區所取得的記憶體不會超過 Database Engine 配置記憶體的 60%。當鎖定集區達到 Database Engine 執行個體所取得之記憶體的 60%,或電腦上沒有多餘的記憶體可用時,之後的鎖定要求都會產生錯誤。
讓 SQL Server 動態地使用鎖定,是建議的組態。但是,您可以設定 locks,並覆寫 SQL Server 動態配置鎖定資源的功能。當 locks 設為 0 以外的數值時,Database Engine 所能配置的鎖定無法超過 locks 中指定的值。如果 SQL Server 顯示訊息表示已超過可用的鎖定個數,就應增加這個值。因為每個鎖定都會耗用記憶體 (每個鎖定 96 個位元組),所以增加這個值可能需要增加伺服器專用的記憶體數量。
locks 選項也會影響發生鎖定擴大的時機。locks 設為 0 時,鎖定擴大會在目前的鎖定結構所用的記憶體達到 Database Engine 記憶體集區的 40% 時發生。locks 未設為 0 時,鎖定擴大會在鎖定個數達到 locks 指定數值的 40% 時發生。
locks 選項屬於進階選項。如果您要使用 sp_configure 系統預存程序來變更此設定,只有當 show advanced options 設為 1 時,才能變更 locks。伺服器重新啟動之後,設定才會生效。