事務的特性ACID

  1. 原子性 Atomicity
    原子性是指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

  2. 一致性 Consistency
    事務的執行不能破壞數據庫數據的完整性和一致性,一個事務在執行之前和執行之後,數據庫都必須處於一致性狀態。
    如果數據庫系統在運行過程中發生故障,有些事務尚未完成就被迫中斷,這些未完成的事務對數據庫所作的修改有一部分已寫入物理數據庫,這是數據庫就處於一種不正確的狀態,也就是不一致的狀態

  3. 隔離性 Isolation
    事務的隔離性是指在併發環境中,併發的事務時相互隔離的,一個事務的執行不能不被其他事務干擾。不同的事務併發操作相同的數據時,每個事務都有各自完成的數據空間,即一個事務內部的操作及使用的數據對其他併發事務時隔離的,併發執行的各個事務之間不能相互干擾。

    在標準SQL規範中,定義了4個事務隔離級別,不同的隔離級別對事務的處理不同,分別是:未授權讀取,授權讀取,可重複讀取和串行化

    • 讀未提交(Read Uncommited),該隔離級別允許髒讀取,其隔離級別最低;比如事務A和事務B同時進行,事務A在整個執行階段,會將某數據的值從1開始一直加到10,然後進行事務提交,此時,事務B能夠看到這個數據項在事務A操作過程中的所有中間值(如1變成2,2變成3等),而對這一系列的中間值的讀取就是未授權讀取
    • 授權讀取也稱爲已提交讀(Read Commited),授權讀取只允許獲取已經提交的數據。比如事務A和事務B同時進行,事務A進行+1操作,此時,事務B無法看到這個數據項在事務A操作過程中的所有中間值,只能看到最終的10。另外,如果說有一個事務C,和事務A進行非常類似的操作,只是事務C是將數據項從10加到20,此時事務B也同樣可以讀取到20,即授權讀取允許不可重複讀取。
    • 可重複讀(Repeatable Read),就是保證在事務處理過程中,多次讀取同一個數據時,其值都和事務開始時刻是一致的,因此該事務級別禁止不可重複讀取和髒讀取,但是有可能出現幻影數據。所謂幻影數據,就是指同樣的事務操作,在前後兩個時間段內執行對同一個數據項的讀取,可能出現不一致的結果。在上面的例子中,可重複讀取隔離級別能夠保證事務B在第一次事務操作過程中,始終對數據項讀取到1,但是在下一次事務操作中,即使事務B(注意,事務名字雖然相同,但是指的是另一個事務操作)採用同樣的查詢方式,就可能讀取到10或20;
    • 串行化,是最嚴格的事務隔離級別,它要求所有事務被串行執行,即事務只能一個接一個的進行處理,不能併發執行。
  4. 持久性 Durability
    一旦事務提交,那麼它對數據庫中的對應數據的狀態的變更就會永久保存到數據庫中。–即使發生系統崩潰或機器宕機等故障,只要數據庫能夠重新啓動,那麼一定能夠將其恢復到事務成功結束的狀態

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