SQL Server 2005 中提供的隔离级别
SQL Server 2005 中提供的隔離級別
| 隔離級別 | 臟讀(可能的情況) | 非可重復讀取(可能的情況) | Phantom(可能的情況) | 并發控制 |
|
讀取未提交 | 是 | 是 | 是 | (無) |
|
讀取已提交 ? | 否 | 是 | 是 | 悲觀 |
|
讀取已提交快照 | 否 | 是 | 是 | 樂觀 |
|
可重復讀取 | 否 | 否 | 是 | 悲觀 |
|
快照 | 否 | 否 | 否 | Optimistic |
|
可序列化 | 否 | 否 | 否 | 悲觀 |
上述每種情況下使用的應用程序根據希望級別的“正確性”和在性能和管理性開銷上的平衡選擇而有所不同。
隔離級別和應用程序最合適
| 隔離級別 | 在以下情況下最適合于應用程序: |
| 讀取未提交 | 應用程序不要求數據的絕對精度(可能得到大于/小于最終值的數值),并且相對于所有其他要求來說更看重 OLTP 操作的性能。不要求版本存儲,不要求鎖定,沒有被授權任何鎖定。這種隔離中查詢的數據精確度可以看到未提交的更改。 |
| 讀取已提交 | 應用程序不要求長期運行集合或長期運行查詢的時點一致,但要求被讀取的數據是事務一致的。應用程序不希望用版本存儲的開銷來平衡長期運行查詢的可能的不正確,因為沒有可重復讀取。 |
| 讀取已提交快照 | 應用程序要求長期運行集合和/或長期運行查詢的絕對的時點一致性。所有數值在查詢開始時必須是事務一致的。數據庫管理員選擇應用程序的版本存儲開銷,以便獲得由于鎖定爭用減少而帶來的吞吐量增加的好處。此外,應用程序需要大型查詢(而不是事務)的事務一致性。 |
| 可重復讀取 | 應用程序要求長期運行多語句事務的絕對精確度,并且在事務完成之前必須保留來自其他修改的所有請求數據。應用程序要求所有在此事務中被重復讀取的數據的一致性,并且要求不允許進行其他修改——如果其他事務嘗試更新讀取器鎖定的數據,這可能會影響多用戶系統中的并發。當應用程序依賴于一致性數據,并且計劃稍后在相同事務中修改數據時,這種級別是最合適的。 |
| 快照 | 應用程序要求長期運行多語句事務的絕對精確度,但不計劃修改數據。應用程序要求所有在此事務中被重復讀取的數據的一致性,但僅計劃讀取數據。不需要使用讀取鎖定來防止其他事務的修改,因為要等到數據修改事務提交或回滾,并且快照事務結束之后才可以看到更改。可以在此事務級別中修改數據,但是有可能與在快照事務啟動后更新相同數據的事務產生沖突。這種沖突可以由每個更新事務來處理。具有多個讀取器但只有一個編寫器的系統(例如上述情境章節中的“復制的報告系統”)不會遇到沖突。 |
| 可序列化 | 應用程序要求長期運行多語句事務的絕對精確度,并且在事務完成之前必須保留來自其他修改的所有請求數據。此外,事務會請求一組數據而不僅僅是單獨的幾行數據。每組數據都必須在事務內的每個請求中產生相同的輸出,并且對于預期的修改,不僅不能有任何用戶可以修改已讀的數據,而且還必須防止向組中輸入新行。當應用程序依賴于一致性數據,計劃稍后在相同事務中修改數據,并且即使在事務的最后都要求絕對的精確度和數據一致性時(在活動數據內),這種級別是最合適的。 |
轉載于:https://www.cnblogs.com/sxfmol/archive/2010/05/04/1727315.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的SQL Server 2005 中提供的隔离级别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WCF服务编程设计规范(6):队列服务、
- 下一篇: 2003 IIS搭建与配置