事務的四大特性和隔離級別


1、事務的特性(ACID):

     原子性(Atomicity):事務是一個原子操作,由一系列動作組成。事務的原子性確保動作要么全部完成,要么完全不起作用。

    一致性(Consistency):執行事務前后,必須是所有的數據都保持一致狀態。

     隔離性(Isolation):並發事務執行之間無影響,在一個事務內部的操作對其他事務是不產生影響,這需要事務隔離級別來指定隔離性。

    持久性(Durability):一旦事務完成,數據庫的改變必須是持久化的。

2、事務的隔離級別:

   為什么會出現事務的隔離級別呢:因為在企業級應用中(高並發的情況下),多用戶訪問數據庫是常見的場景,這就是所謂的事務的並發,事務與事務之間可能產生的影響,事務並發所可能存在的問題:

     臟讀:針對未提交數據)如果一個事務中對數據進行了更新,但事務還沒有提交,另一個事務可以“看到”該事務沒有提交的更新結果,這樣造成的問題就是,如果    第 一 個事務回滾,那么,第二個事務在此之前所“看到”的數據就是一筆臟數據。

 

    不可重復讀:針對其他提交前后,讀取數據本身的對比)一個事務兩次讀同一行數據,可是這兩次讀到的數據不一樣。不可重復讀取是指同一個事務在整個事務過    程中 對同一筆數據進行讀取,每次讀取結果都不同。如果事務1在事務2的更新操作之前讀取一次數據,在事務2的更新操作之后再讀取同一筆數據一                                次,兩 次結果是不同的。

 

    幻讀:針對其他提交前后,讀取數據條數的對比) 一個事務執行兩次查詢,但第二次查詢比第一次查詢多出了一些數據行。

    

   丟失更新:撤消一個事務時,把其它事務已提交的更新的數據覆蓋了。

   不可重復都和幻讀主要的區別是:前者注重的是數據修改,后者是數據添加。

  針對並發事務出現的問題,隔離級別就是為了防止這樣的事情發生,根據業務的場景而定:

      ① Read uncommitted (讀未提交):最低級別,任何情況都無法保證。

   ② Read committed (讀已提交):可避免臟讀的發生。

   ③ Repeatable read (可重復讀):可避免臟讀、不可重復讀的發生。

   ④ Serializable (串行化):可避免臟讀、不可重復讀、幻讀的發生。


免責聲明!

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



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