MySQL數據庫事務及其特性

一、事務概念

事務就是一個程序執行單元,裏面的操作要麼都做,要麼都不做。
二、事務特性

事務有四個非常重要的特性(ACID):

原子性(Atomicity):事務是不可分割的整體,所有操作要麼全做,要麼全不做;只要事務中有一個操作出錯,回滾到事務開始前狀態,即之前已執行的操作無效。

一致性(Consistency):事務執行前後,從一個一致性狀態到另一個一致性狀態;比如A向B轉賬(A、B總金額就是一個一致性狀態),不可能出現A扣了錢。B卻沒收到。

隔離性(Isolation):多個併發事務之間相互隔離, 不能相互干擾。

持久性(Durablity):事務完成後,對數據庫的更改是永久保存的,不能回滾。
三、事務併發問題

1、髒讀:一個事務讀取了另一個事務未提交的數據。

2、不可重複讀:一個事務多次讀取同一數據,得到了不同的值。(被另一個事務更新了--update)

3、幻讀:也是多次讀取得到的結果不一致。(被另一個事務增加或刪除了記錄--insert/delete)
四、事務隔離級別(MySQL)

1、讀未提交(read-uncommitted)

2、讀已提交(read-committed):解決髒讀

3、可重複讀(Repeatable read):解決髒讀、不可重複讀

4、串行化(Serializable):解決髒讀、不可重複讀、幻讀

MySQL默認的隔離級別是read-committed,級別越高,性能就越低。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章