伺服器組態:鎖定
適用於:SQL Server
本文說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中設定 locks
伺服器組態選項。 選項locks
會設定可用鎖定的最大數目,這會限制 SQL Server 資料庫引擎 用於這些鎖定的記憶體數量。 預設值為 0,允許資料庫引擎根據變更系統需求,動態配置與取消配置鎖定結構。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
建議
此選項是進階選項,只有具經驗的資料庫管理員或通過認證的 SQL Server 專業人員才可變更。
當伺服器從 設定為 0
開始locks
時,鎖定管理員會從 資料庫引擎 取得足夠的記憶體,以供初始集區 2,500 個鎖定結構使用。 當鎖定集區耗盡時,會為集區取得更多記憶體。
一般而言,如果鎖定集區所需的記憶體比 資料庫引擎 記憶體集區中可用的記憶體還多,而且有更多可用的計算機記憶體(max server memory
尚未達到閾值),資料庫引擎 會動態配置記憶體以滿足鎖定的要求。 不過,如果配置該記憶體會導致操作系統層級的分頁(例如,如果另一個應用程式在與 SQL Server 實例相同的電腦上執行並使用該記憶體),則不會配置更多的鎖定空間。 動態鎖定集區不會取得配置給 資料庫引擎的 60% 以上的記憶體。 鎖定集區達到 資料庫引擎 實例取得的 60% 記憶體之後,或計算機上沒有更多記憶體可用,進一步要求鎖定會產生錯誤。
讓 SQL Server 動態地使用鎖定,是建議的設定。 不過,您可以設定 locks
和覆寫 SQL Server 動態配置鎖定資源的能力。 當 設定為 以外的0
值時locks
,資料庫引擎 無法配置比 中指定的locks
值更多的鎖定。 如果 SQL Server 顯示超過可用鎖定數目的訊息,請增加此值。 因為每個鎖定都會耗用記憶體 (每個鎖定 96 個位元組),所以增加這個值可能需要增加伺服器專用的記憶體數量。
此選項 locks
也會影響鎖定擴大發生的時間。 當 設定為 0
時locks
,當目前鎖定結構使用的記憶體達到 資料庫引擎 記憶體集區的 40% 時,就會發生鎖定擴大。 當 未設定為 0
時locks
,當鎖定數目達到指定的locks
值 40% 時,就會發生鎖定擴大。
權限
不含參數或只含第一個參數之 sp_configure
上的執行權限預設會授與所有使用者。 以同時設定兩個參數的 sp_configure
來變更組態選項或執行 RECONFIGURE
陳述式時,使用者必須取得 ALTER SETTINGS
伺服器層級權限。 sysadmin 和 serveradmin 固定伺服器角色隱含地持有 ALTER SETTINGS
權限。
使用 SQL Server Management Studio
在物件總管中,請以滑鼠右鍵按一下伺服器,然後選取 [屬性]。
選取 [進階] 節點。
在 [平行處理原則] 下,輸入選項所需的值
locks
。locks
使用 選項可設定可用鎖定數目上限,這會限制 SQL Server 用於這些鎖定的記憶體數量。
使用 Transact-SQL
連線至資料庫引擎。
在標準列上,選取 [新增查詢]。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。 此範例示範如何使用 sp_configure 設定
locks
選項的值,將可供所有使用者使用的鎖定數目設定為20000
。USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'locks', 20000; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
如需詳細資訊,請參閱伺服器設定選項。
待處理:設定鎖定選項之後
伺服器必須重新啟動之後,設定才能生效。