關聯式資料庫為了確保資料一致性,使用:交易與鎖定等機制來處理。
若是為了:
- 防止交易讀到尚未認可的資料修改 (中途讀取)。
- 將鎖定爭用的情況降到最低。
在SQL Server 2005中提供了:
- 「讀取認可快照(READ_COMMITTED_SNAPSHOT)」
- 「快照集隔離(SNAPSHOT isolation)」
若要啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」,可以使用以下的方式:
- SSMS管理工具:指定資料庫的屬性
- T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON
-- 01_SSMS_啟用讀取認可快照
T-SQL 陳述式:ALTER DATABASE...SET READ_COMMITTED_SNAPSHOT ON
啟用「讀取認可快照(READ_COMMITTED_SNAPSHOT)」
-- 01_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態 SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態', snapshot_isolation_state_desc N'快照集隔離交易狀態的描述', is_read_committed_snapshot_on N'啟用讀取認可快照' FROM sys.databases ORDER BY 4 DESC GO -- 02_啟用特定資料庫的「讀取認可快照」 USE master GO ALTER DATABASE DB01 SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE; GO -- 03_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態 SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態', snapshot_isolation_state_desc N'快照集隔離交易狀態的描述', is_read_committed_snapshot_on N'啟用讀取認可快照' FROM sys.databases ORDER BY 4 DESC GO -- 04_關閉:特定資料庫的「讀取認可快照」 USE master GO ALTER DATABASE DB01 SET READ_COMMITTED_SNAPSHOT OFF WITH ROLLBACK IMMEDIATE; GO -- 05_查詢伺服器上各個資料庫的「讀取認可快照」、「快照集隔離」之狀態 SELECT name N'資料庫', snapshot_isolation_state N'快照集隔離交易狀態', snapshot_isolation_state_desc N'快照集隔離交易狀態的描述', is_read_committed_snapshot_on N'啟用讀取認可快照' FROM sys.databases ORDER BY 4 DESC GO
-- 21_TSQL_查詢_讀取認可快照
-- 22_啟用特定資料庫的「讀取認可快照」
-- 23_TSQL_查詢_讀取認可快照
參考資料
在「資料庫鏡像」上,啟用「讀取認可快照(Read Committed Snapshot)」。遭遇錯誤:訊息 1468,層級 16,狀態 4,因為它牽涉到資料庫鏡像工作階段(because it is involved in a database mirroring session)。
http://sharedderrick.blogspot.tw/2010/05/read-committed-snapshot-1468-16.html
Database Engine 中的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms189122.aspx
Database Engine 中資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms179599.aspx
啟用資料列版本控制式的隔離等級
http://msdn.microsoft.com/zh-tw/library/ms175095.aspx
How to Enable RCSI for a Database with Database Mirroring
http://blogs.msdn.com/sqlcat/archive/2010/03/16/how-to-enable-rcsi-for-a-database-with-database-mirroring.aspx
SQL Server 中的快照集隔離
https://msdn.microsoft.com/zh-tw/library/tcbchxcb(v=vs.110).aspx
選擇以資料列版本控制為基礎的隔離等級
https://technet.microsoft.com/zh-tw/library/ms188277(v=sql.90).aspx
沒有留言:
張貼留言