Share via


鎖定資料粒度和階層

Microsoft SQL Server Database Engine 擁有多個資料粒度的鎖定 (Lock),允許交易鎖定不同類型的資源。為了把鎖定的成本降至最低,Database Engine 自動依照工作的適當層級來鎖定資源。鎖定於較小的資料粒度 (Granularity) 如資料列可以提高並行,但如果鎖定許多的資料列則由於必須持有更多的鎖定而造成更高的負擔。鎖定於較大的資料粒度如資料表,從並行的角度來看則由於鎖定整個資料表會限制其他交易對於資料表其他部份的存取因而更費時。但由於必須維持的鎖定較少因此負擔較低。

Database Engine 通常必須在資料粒度的多個層級取得鎖定,以完全保護資源。在資料粒度的多個層級之鎖定群組稱為鎖定階層。例如,若要充份地保護索引的讀取,Database Engine 可能需要取得資料列的共用鎖定以及頁面和資料表的意圖共用鎖定。

下表顯示Database Engine 可以鎖定的資源。

資源 描述

RID

資料列識別碼,用來鎖定堆積內單一資料列。

KEY

索引中的資料列鎖定,用來保護可序列化交易中的索引鍵範圍。

PAGE

資料庫中的 8 KB 頁面,例如資料或索引頁面。

EXTENT

連續八個頁面的群組,例如資料頁或索引頁面。

HOBT

堆積或 B 樹狀目錄。針對沒有叢集索引的資料表中之資料頁,保護其索引或堆積的鎖定。

TABLE

一整個資料表,包含所有資料和索引。

FILE

資料庫檔案

APPLICATION

應用程式指定資源。

METADATA

中繼資料鎖定。

ALLOCATION_UNIT

配置單位。

DATABASE

一整個資料庫。

請參閱

概念

鎖定模式
鎖定相容性 (Database Engine)

說明及資訊

取得 SQL Server 2005 協助