高性能mysql讀書筆記之ACID之我見

  • 說道數據庫acid必然是常見的問題,A原子性,C 一致性 I  隔離性  D  永久性。
  • A 原子性: 原子物理上解釋就是不可分割的,當然嚴格上原子是可分割的因爲還有原子核,電子,質子。當然用在數據庫事務上這裏指的就是事務的不可分割性。一個事務裏無論做了多少事情,這些事情中不會出現有的成功有的失敗。這就是說要不全部成功,要不全部失敗。就像是一根繩上的螞蚱,要死都死,要活都活。
  • C:一致性。一致性是一個狀態的一種描述,從一種一致性狀態到另一種一致性狀態,這就是一致性的要求。在事務執行和過程中,出現任何異常比如服務器宕機等,事務裏的操作也不可能出現不一致性的狀態,經典的銀行轉賬問題,比如在執行到A賬戶減去200成功,之後在執行B賬戶加200錢數據庫掛了,那麼也不會出現A賬戶減少了200,B賬戶餘額不變的情況,因爲事務沒有被提交。這就像事務的操作在內存裏進行,只有進行到事務提交纔會寫入磁盤,事務執行完會寫入事務專有的一塊磁盤區域,之後在持久化到數據庫存儲引擎。
  • I:隔離性:隔離性是指事務之間互不干擾,這個在實際上很難做到,也不會去採用做到的方式。做到完全隔離代價太大,一般實際上不會滿足完全隔離。這就像線程於線程之間互相隔離,各自擁有自己獨自的棧區。當然線程之間也會有通信的需求,但是其內部是互相隔離,就像每個人有一個房間一樣。房間裏都是自己私有的,客廳就像是共享的區域。通過客廳大家就可以對同一個物品進行共享使用,比如電熱水瓶,都可以從裏邊取水和。
  • D: 永久性。永久性是指一旦事務執行完畢,那麼事務所做的修改就永遠存在。當然比如炸了服務器毀掉磁盤等易燃可以毀壞數據。這既是異地多活,容災備份的事情了。比如熱議文章如果炸了支付寶服務器會怎樣。比如支付寶三地多中心備份,那麼除非都炸掉了,那麼也有恢復手段,那就是支付寶與銀行人民銀行的交易記錄。可能會損失一部分數據,比如還沒有來的即同步的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章