ACID——MYSQL事務的四個特性

ACID指出每個事務型RDBMS必須遵守四個屬性,即原子性、一致性、孤立性、持久性。

原子性

  • 原子性意味着事務的整體性和不可分割性,這就類似化學中的原子,是一個不可分割的單元。一個事務可以是一個(任務)操作,也可以是多個(任務)操作,假設一個事務由多個操作(任務)組成,那麼這些操作必須都執行成功這個事務才被認爲執行成功,只要其中有一個任務執行失敗那麼整個事務都會被認爲執行失敗,導致自動回滾到初始狀態,通俗來講就是“同進退”,這保證了事務的整體性。這就是事物的原子性。
    專業來講,原子的執行是一個全部發生或全部失敗的整體過程。在一個原子操作中,如果事務中的任何一個語句失敗,前面執行的語句都將被返回,以保證數據的整體性不被破壞。這在常用的系統應用中,爲保證數據的安全性起到一定作用。
    (注:可以結合博客http://blog.csdn.net/jeaforea/article/details/51994636來理解)

一致性

  • 在MySql事務處理過程中,無論事務是完全成功或是在中途因某些環節失敗而導致失敗,但事務使系統處於一致的狀態時,必須保持一致性,用戶A向用戶B的賬戶中轉入5000元,但用戶B在查詢轉賬信息的時候,發現自己的賬戶只增加了3000元,這樣不能使整個事務達到一致性。
    在MySql中,一致性主要由MySql的日誌機制處理,它記錄數據庫的所有變化,爲事務回覆提供跟蹤記錄。如果系統在事務處理中間發生錯誤,MySql恢復過程將使用這些日誌發現事務是否已經完全成功執行或需要返回。一致性屬性保證數據庫從不返回一個未處理的事務。

孤立性

  • 孤立性也稱隔離性,它是指每個事務在自己的空間發生,和其他發生在系統中的事務隔離,而且事務的結果只在它完全被執行的時候才能看到,如果該事務未提交,則其他會話看不到執行的結果。這樣的話即使一個系統中同時發生多個事務,孤立性也可以保證特定的事務在完成之前,其結果是不被公佈的。
    當系統支持多個同時存在的用戶和連接時,系統必須遵守孤立性原則,否則在執行過程中可能導致大量數據被破壞,孤立性保證每個事務完整地在其各自的空間內被順序的執行,保證事務之間不會相互衝突。

持久性

  • 在MySql中,即使是數據庫系統崩潰,一個提交的事務仍然在堅持。當一個事務完成,數據庫的日誌已經被更新時,持久性即可發揮其特有功效。在MySql中,如果系統崩潰或者數據存儲介質被破壞,通過使用日誌,系統能夠恢復在重啓前進行的最後一次成功更新,可以反應系統崩潰時處於執行過程的事務的變化。
    MySql的持久性是通過一條記錄事務過程中系統變化的二進制事務日誌文件來實現的。如果遇到硬件損壞或者系統的異常關機,系統在下一次啓動時,通過使用最後的備份和日誌就可以恢復丟失數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章