Database Engine 中資料列版本控制式的隔離等級

Microsoft SQL Server 2005 Database Engine 導入一種現有交易隔離等級的新實作方式:讀取認可。它使用資料列版本控制,提供陳述式層級的快照。另外,SQL Server 2005 Database Engine 也導入了新的交易隔離等級:快照。它也使用資料列版本控制,提供交易層級的快照。

將 READ_COMMITTED_SNAPSHOT 資料庫選項設為 ON,即可啟用使用資料列版本控制的讀取認可隔離。將 ALLOW_SNAPSHOT_ISOLATION 資料庫選項設為 ON,即可啟用快照隔離。不論啟用哪一個資料庫選項,Database Engine 都會維護每個資料列修改過的版本。每當交易修改資料列時,修改前的資料列影像會複製到版本存放區中的頁面。版本存放區是 tempdb 中資料頁的集合。如果多個交易修改一個資料列,則資料列的多個版本會在版本鏈結中加以連結。使用資料列版本控制的讀取作業,會在交易或陳述式開始時擷取已認可的每個資料列最新的版本。

為 SQL Server 2000 撰寫的應用程式或對 SQL Server 2005 不熟悉的應用程式,可以藉由指定讀取認可交易隔離等級 (READ_COMMITTED_SNAPSHOT 資料庫選項設為 ON 時),實作會使用資料列版本控制的讀取認可隔離。所有讀取作業會在陳述式開始時檢視已認可的資料列版本。這提供了陳述式層級的資料快照。

為 SQL Server 2005 撰寫的應用程式,可以藉由指定快照集交易隔離等級 (ALLOW_SNAPSHOT_ISOLATION 資料庫選項設為 ON 時),實作快照隔離。快照集交易中的所有讀取作業會在交易開始時檢視已認可的資料列版本。這提供了交易層級的資料快照。

對於使用以資料列版本控制為基礎之隔離等級的交易,讀取作業不會要求資料的共用鎖定。這表示,使用資料列版本控制的讀取器不會封鎖其他存取相同資料的讀取器或寫入器。同樣地,寫入器也不會封鎖讀取器。但寫入器會互相封鎖,即使是在資料列版本控制式的隔離等級下執行。兩個寫入作業不可同時修改相同資料。

下列表格列出其他主題,提供資料列版本控制式的隔離等級之詳細資訊。

主題 描述

瞭解以資料列版本控制為基礎的隔離等級

描述資料列版本控制概念。

選擇以資料列版本控制為基礎的隔離等級

描述資料列版本控制的優點與成本,並提供最適合資料列版本控制的案例建議。

啟用資料列版本控制式的隔離等級

描述在資料庫中啟用資料列版本控制的選項。

使用資料列版本控制式的隔離等級

描述資料列版本控制式的隔離等級限制。

資料列版本控制資源的使用方式

描述資料列版本控制對系統的影響,並討論動態管理檢視 (DMV) 和效能計數器 (會傳回資料庫和交易中資料列版本控制狀態的資訊)。

請參閱

概念

Database Engine 中的隔離等級
Database Engine 中的鎖定
交易 (Database Engine)

說明及資訊

取得 SQL Server 2005 協助