text: 快照隔離。很多重要的資料庫管理系統已經採用了快照隔離，如InterBase, Firebird, Oracle, MySQL, PostgreSQL, , MongoDB 與 Microsoft SQL Server (從2005)。原因是快照隔離比可序列性隔離級別的效能更好，且能避免絕大多數併發異常。快照隔離一般用多版本併發控制(MVCC)實現。 快照隔離避免了ISO SQL-92所列舉的併發異常現象，但不是SQL-92定義的無併發異常的可序列化。定義.事務在啟動時得到一個數據庫的版本號。事務結束時，成功提交僅當它修改的快照的資料項此時沒有被外界改變，即沒有，否則事務流產。寫偏斜異常，是指兩個事務(T1與T2)併發讀取一個數據集(例如包含 V1 與 V2)，然後各自修改資料集中不相交的資料項(例如 T1 修改 V1, T2 修改 V2)，最後併發提交事務。如果事務是序列執行，這種異常不會發生。而快照隔離允許這種異常發生。例如，設想 V1 與 V2是 Phil的個人銀行賬戶。銀行允許V1或V2是空頭賬戶，只要兩個賬戶總和非負(即 V1 + V2 ≥ 0). 兩個戶頭的初值各是 $100. Phil啟動兩個事務，T1從V1取出$200，T2從V2取出$200。解決寫偏移異常的兩種策略：在上述例子中，可以重建一個表，記錄每個儲戶與其總金額。但這種方法違背了資料庫正規化。另一種方式把一個事務的讀資料提升為寫資料，如T2做V1 = V1。但這種操作不總是可能的。歷史.快照隔離源自多版本併發控制資料庫。 InterBase，從1985年版本4開始提供了不是真正的可序列化的SI，並帶有寫偏移異常。ANSI SQL-92標準基於資料庫鎖機制，對MVCC系統缺乏認識。2008年Cahill等人的論文指出寫偏斜異常可透過檢測並流產危險的併發任務群解決。已經被PostgreSQL 9.1採用這被稱作"Serializable Snapshot Isolation", SSI.2011, Jimenez-Peris等人申報專利可以解決每秒上千萬次事務提交的快照隔離，成為超大規模併發資料庫引擎LeanXcale的基礎 . 2010成為CumuloNimbo European Project的部分 .
metadata: erhwenkuo/wikipedia-zhtw
metadata: 快照隔離
metadata: https://zh.wikipedia.org/wiki?curid=6360239