鎖定擴大規模
鎖定擴大規模是將許多細粒鎖定 (例如資料列) 轉換為較少的粗粒鎖定 (例如資料表) 的程序。使用鎖定擴大規模可降低系統額外負擔。
Microsoft 當交易超過其擴大臨界值時,SQL Server 2005 Compact Edition (SQL Server Compact Edition) 會自動將資料列鎖定與資料頁鎖定,擴大到資料表鎖定。在 SQL Server Compact Edition 中,鎖定擴大規模可能是從資料列到資料表,或是從資料頁到資料表,但不會從資料列到資料頁。從資料表層級擴大時,低於資料表的層級不會有鎖定要求。
例如,當交易在資料表的資料列作業時,SQL Server Compact Edition 會自動取得那些受影響之資料列的鎖定,並將較高層級的意圖鎖定放在包含這些資料列的資料頁和資料表。相關的索引頁也會鎖定。當交易保有的鎖定數量超過其臨界值時,SQL Server Compact Edition 會嘗試將資料表的意圖鎖定,變更為更強大的鎖定。例如,意圖獨佔 (IX) 鎖定會變更到獨佔 (X) 鎖定。在取得更強大的鎖定後,所有資料表上交易保留之低於資料頁和資料行的鎖定,都會釋放。
當鎖定的要求導致超過特定鎖定擴大規模臨界值時,會以每個資料表為基準發生鎖定擴大規模。所有的子資料表鎖定,不管型別為何,都會計算到臨界值。這些擴大規模臨界值只能被視為大約值,因為所有內部作業要求的鎖定都計算到該臨界值。擴大規模可能會比預期還早發生。
如果因為鎖定衝突而無法擴大規模,交易將會繼續,也可能稍後再嘗試擴大。
附註: |
---|
意圖鎖定、資料列鎖定和資料頁鎖定,都計算到擴大規模計數,除非是暫時資料表鎖定。當特定資料表上的意圖鎖定、資料列鎖定和資料頁鎖定總數超過擴大規模臨界值時,就會發生擴大規模。 |
您可以設定鎖定擴大規模臨界值,以控制每一工作階段的鎖定擴大規模,如以下程式碼範例所示︰
SET LOCK_ESCALATION 1000;
此設定影響資料庫中所有的資料表。預設值為 100。