概念:事務(wù)就是一組原子性的SQL查詢,或者說一個獨(dú)立的工作單元
如果數(shù)據(jù)庫引擎能成功地對數(shù)據(jù)庫應(yīng)用該組查詢的全部語句,那么就執(zhí)行該組查詢,如果其中有任何一條語句因?yàn)楸罎⒒蚱渌驘o法執(zhí)行,那么所有的語句都不會執(zhí)行,也就是說,事務(wù)內(nèi)的語句,要么全部執(zhí)行成功,要么全部失敗。
示例:銀行轉(zhuǎn)帳
- 檢查A帳戶中余額高于200美元
- 從A帳戶中減去200美元
- 在B帳戶中增加200美元
上述三個操作必須打包在一個事務(wù)中,任何一個步驟失敗,則必須回滾所有的步驟。
ACID測試
- A(atomictiy) 原子性 :一個事務(wù)必須被視為一個不可分割的最小工作單元,整個事務(wù)中的所有操作要么全部提交成功,要么全部失敗回滾,對于一個事務(wù)來說,不可能只執(zhí)行其中的一部分操作,這就是事務(wù)的原子性。
- C(consistency) 一致性:數(shù)據(jù)庫總是從一個一致性狀態(tài)轉(zhuǎn)換到另一個一致性狀態(tài)。所做的修改需要提交才會保存到數(shù)據(jù)庫中
- I(isolation) 隔離性:通常來說,一個事務(wù)所做的修改在最終提交以前,對其他事務(wù)是不可見的。
- D(durability) 持久性:一旦事務(wù)提交,則其所做的修改就會永久保存到數(shù)據(jù)庫中,此時即使系統(tǒng)崩潰,修改的數(shù)據(jù)也不會丟失。
參考資料: 高性能MySQL》1.2