綜述
事務(wù)被因,是一個數(shù)據(jù)庫繞不開的話題卿拴。我本人對于事務(wù)的理解,也僅僅停留在表層氏身,應(yīng)用層面也只是使用下Spring的聲明式事務(wù)巍棱,對于事務(wù),總感覺如隔了一層紗蛋欣,模糊不清航徙。借此讀書機(jī)會,深入理解下事務(wù)的因果陷虎,做到知其然知其所以然到踏。以下是暫時的理解,后期持續(xù)更新尚猿,做到熟記概念窝稿,講的通原理,能夠正確運用凿掂。
事務(wù)是個抽象的概念伴榔,是數(shù)據(jù)庫提供的一種安全保障,避免了應(yīng)用程序為了保障數(shù)據(jù)完整性為引入過多的復(fù)雜設(shè)計庄萎。
ACID
- 原子性(Atomicity)
原子性的定義特征:能夠在錯誤時中止事務(wù)踪少,丟棄該事務(wù)進(jìn)行的所有寫入變更的能力。
原子性描述的不是并發(fā)的問題糠涛,它描述的是一個事務(wù)所做的修改援奢,要么一起完成后提交,要么失敗后事務(wù)回滾忍捡,數(shù)據(jù)庫會到事務(wù)開始前的狀態(tài)集漾。 - 一致性(Consistency)
一致性的定義特征:對數(shù)據(jù)的一組特定陳述必須始終成立。
一致性是被書中說湊數(shù)的砸脊,實際需要應(yīng)用程序來保障具篇。舉例:比如銀行轉(zhuǎn)賬,A和B賬號都為500元凌埂,則合計1000元栽连。一致性就是要保障在轉(zhuǎn)賬前后,1000元總數(shù)不變,而這需要應(yīng)用程序來保障秒紧。 - 隔離性(Isolation)
隔離性的定義特征:隔離性是描述的并發(fā)問題绢陌,當(dāng)出現(xiàn)競態(tài)條件是,數(shù)據(jù)庫如何處理熔恢。不同的數(shù)據(jù)庫提供了不同的隔離級別來保障事務(wù)脐湾。常見的是"Read Committed",即讀已提交叙淌,MySQL是"Repeatable Read"秤掌,即可重復(fù)讀。事務(wù)的隔離級別是實現(xiàn)很有意思鹰霍,也是一個值得深究的話題闻鉴,比如MVCC等。留坑后補(bǔ)茂洒。 - 持久性(Durability)
持久性的定義特性:事務(wù)一旦提交孟岛,數(shù)據(jù)就永久保存不會丟失。書中討論的磁盤損壞的話題督勺,還討論了數(shù)據(jù)備份問題渠羞。這里的永久保存就像可靠性保障,沒有100%智哀。
隔離級別
討論隔離級別次询,就需要為什么要分為不同的隔離級別,以及不同隔離級別保證的什么功能瓷叫。必須要理解臟讀屯吊、臟寫、更新丟失摹菠、不可重復(fù)讀以及幻讀的概念盒卸。留坑后補(bǔ)吧。