共用方式為


鎖定 (SQL Server Compact)

當多名使用者或多個應用程式同時存取同一筆資料時,利用鎖定可防止資料同時遭受變更。鎖定是由 MicrosoftSQL Server CompactDatabase Engine 內部所管理。鎖定會根據使用者的動作自動取得及釋放。

在多名使用者同時更新相同資料時,如果不使用鎖定,資料庫內部的資料可能會發生邏輯上的不正確。一旦發生此事,對該資料執行查詢時可能會產生非預期的結果。

應用程式從不會直接要求鎖定,而是當交易開始並在交易內的查詢語言、資料操作語言 (DML) 或資料定義語言 (DDL) 中執行命令時,由 SQL Server Compact 鎖定任何需要的資源,以在您所要的隔離等級協助保護資源。

SQL Server Compact 會自動決定何時要為所有資源授予及釋放鎖定。依照預設,資料頁會使用資料列層級的鎖定,索引頁會使用頁層級的鎖定。為了保留系統資源,當資料列鎖定數超過可設定的臨界值時,鎖定管理員會自動執行鎖定擴大。在鎖定管理員中,每個工作階段可配置的最大鎖定數是 262143。

您可選擇為某些作業變更鎖定資料粒度。但是請小心使用,因為變更鎖定資料粒度可能會對並行性有不利影響。

SQL Server Compact 可以鎖定下列資源:

  • 資料列

  • 4 KB 資料頁或索引頁

  • 資料表結構描述

  • 資料表

  • 資料庫

鎖定在較小的資料粒度 (如資料列層級) 可增加並行性,但也會增加額外負擔,因為鎖定許多資料列時必須維持更多鎖定。鎖定在較大的資料粒度 (如資料表層級) 會降低並行性,因為鎖定完整的資料表會限制其他交易對此資料表任一部分的存取。然而,在此層級鎖定的額外負擔較低,因為所維護的鎖定較少。

本節內容

主題

說明

了解鎖定

在 SQL Server Compact 中說明鎖定的基本資訊。

顯示鎖定資訊

描述由 sys.lock_information 檢視傳回的顯示資訊。

自訂鎖定

描述自訂鎖定的方式。