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。伺服器重新啟動之後,設定才會生效。