學了看了用了這麼久(3年左右)的mysql資料庫,文件看了一大堆,總感覺還是如井底之蛙般的看待acid。
acid:
原子性:對於dml,要麼全部成功,要麼全部失敗。
一致性:另外3點保證這一點。(從資料庫的角度去看待這個定義,不是從使用的角度)。
隔離性:不同事物(transaction)互相影響的程度。
永續性:寫到持久儲存的介質上才放心。
補充:redo log保證了永續性,即使發生crash了也能恢復。
undo log實現了原子性和隔離性。
mvcc,多版本一致性控制,應該屬於一致性的一種,使用undo log實現。
雖然知道mysql的執行原理,使用起來不會出錯。
如果會,mysql的事物不就有問題了嗎?
如果不會,mysql的事物怎樣做到絕對保證的?這類似乙個證明題:在已知的條件下,如redo log, undo log等等,證明轉賬絕對不會出錯。
想了好久,發現還是不會證明。
首先意識到自己對於mysql真的了解還不夠深刻,或者說對acid知道的還不夠深刻,更是沒法從模型外的角度去看模型本身。感覺仍是在死記硬背這個模型,不識廬山真面目,只緣身在此山中。
繼續嘗試思考:
在acid模型出現之前,這個模型是怎樣被建立起來的?可是我並不知道這段歷史。
嘗試站在使用的角度去思考(並不確定是否已經跳出了模型)。資料庫是為了記錄(計數或記錄等等)事情的發展而應用的,就像用筆寫在本子上一樣。假定我們希望能連續不停的記錄,墨水無限用,紙張無限長。
寫不下去了。。。
資料庫事物的ACID特性
資料庫事務必須具備acid特性,acid是atomic 原子性 consistency 一致性 isolation 隔離性 和durability 永續性 的英文縮寫。原子性 指整個資料庫事務是不可分割的工作單位。只有使據庫中所有的操作執行成功,才算整個事務成功 事務中任何乙個sql語句執行失敗,那...
資料庫事物四大特性 ACID
事務的 原子性 一致性 分離性 永續性 事物 transaction 是由一些列操作序列構成的執行單元,這些單元要麼都做,要麼不做,是乙個不可分割的工作單元。資料庫事物的四個基本性質 acid 1.原子性 atomicity 指的是事物中包含的所有操作要麼全做,要麼全不做 all or none 2...
資料庫事物四大特性 ACID
事物 transaction 是由一些列操作序列構成的執行單元,這些單元要麼都做,要麼不做,是乙個不可分割的工作單元。資料庫事物的四個基本性質 acid 1.原子性 atomicity 指的是事物中包含的所有操作要麼全做,要麼全不做 all or none 2.一致性 consistency 在事物...