什麼是數據庫事務?
事務(transaction)是由一系列操作序列構成的程序執行單元,這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。
數據庫事務的四個基本性質(ACID)
1. 原子性(Atomicity)
事務的原子性是指事務中包含的所有操作要麼全做,要麼全不做(all or none)。
2. 一致性(Consistency)
在事務開始以前,數據庫處於一致性的狀態,事務結束後,數據庫也必須處於一致性狀態。
拿銀行轉賬來說,一致性要求事務的執行不應改變A、B 兩個賬戶的金額總和。如果沒有這種一致性要求,轉賬過程中就會發生錢無中生有,或者不翼而飛的現象。事務應該把數據庫從一個一致性狀態轉換到另外一個一致性狀態。
3. 隔離性(Isolation)
事務隔離性要求系統必須保證事務不受其他並發執行的事務的影響,也即要達到這樣一種效果:對於任何一對事務T1 和 T2,在事務 T1 看來,T2 要麼在 T1 開始之前已經結束,要麼在 T1 完成之後才開始執行。這樣,每個事務都感覺不到系統中有其他事務在並發地執行。
4. 持久性(Durability)
一個事務一旦成功完成,它對數據庫的改變必須是永久的,即便是在系統遇到故障的情況下也不會丟失。數據的重要性決定了事務持久性的重要性。