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,級別越高,性能就越低。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM