1、Atomicity(原子性):壹個事務(transaction)中的所有操作,要麽全部完成,要麽全部不完成,不會結束在中間某個環節。
事務在執行過程中發生錯誤,會被恢復(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過壹樣。
2、Consistency(壹致性):在事務開始之前和事務結束以後,數據庫的完整性沒有被破壞。這表示寫入的資料必須完全符合所有的預設規則,這包含資料的精確度、串聯性以及後續數據庫可以自發性地完成預定的工作。
3、Isolation(隔離性):數據庫允許多個並發事務同時對其數據進行讀寫和修改的能力,隔離性可以防止多個事務並發執行時由於交叉執行而導致數據的不壹致。
事務隔離分為不同級別,包括讀未提交(Read uncommitted)、讀提交(read committed)、可重復讀(repeatable read)和串行化(Serializable)。
4、Durability(持久性):事務處理結束後,對數據的修改就是永久的,即便系統故障也不會丟失。
實施
處理事務通常需要壹系列操作,由於多種原因,這些操作容易失敗。例如,系統可能在其磁盤驅動器上沒有剩余空間,或者它可能已經用完了分配的CPU時間。
有兩種流行的技術家族:預寫日誌記錄和影子分頁。在這兩種情況下,都必須對所有要更新的信息以及隔離級別(可能還取決於可能讀取的所有數據)獲取鎖。在預寫日誌記錄中,通過在更改數據庫之前將原始(未更改)數據復制到日誌中來保證持久性。
這樣可以使數據庫在發生崩潰的情況下返回到壹致的狀態。在陰影中,更新將應用於數據庫的部分副本,並且在事務提交時激活新副本。