-
數據庫事務:構成單一邏輯工作單元的操作集合
- 數據庫事務可以包含一個或多個數據庫操作,但這些操作構成一個邏輯上的整體
- 構成邏輯整體的這些數據庫操作,要么全部執行成功,要么全部不執行
- 構成事務的所有操作,要么全都對數據庫產生影響,要么全都不產生影響,即不管事務是否執行成功,數據庫總能保持一致性狀態
- 以上即使在數據庫出現故障以及並發事務存在的情況下依然成立
-
事務的ACID特性
- 原子性:事務中的所有操作作為一個整體像原子一樣不可分割,要么全部成功,要么全部失敗。
- 原子性實現原理:
- 一致性:事務開始前和結束后,數據庫的完整性約束沒有被破壞,都是合法的數據狀態。比如A向B轉賬,不可能A扣了錢,B卻沒收到。
- 隔離性:並發執行的事務不會相互影響,其對數據庫的影響和它們串行執行時一樣。
- 持久性:事務一旦提交,其對數據庫的更新就是持久的。任何事務或系統故障都不會導致數據丟失。
-
在事務的ACID特性中,一致性是事務的根本追求,而對數據庫一致性的破壞主要來自兩個方面:
- 事務的並發執行
- 事務故障或系統故障
-
如何避免數據庫一致性被破壞
- 並發控制技術:保證了事務的隔離性,使數據庫的一致性不會因為並發執行被操作
- 日志恢復技術:保證了事務的原子性,使數據庫的一致性不會因事務或系統故障被破壞。同時使已提交的對數據庫的修改不會因系統崩潰而丟失,保證了事務的持久性。