數據庫事務四大特性


 

事務(Transaction)是並發控制的基本單位。所謂事務,它是一個操作序列,這些操作要么都執行,要么都不執行,它是一個不可分割的工作單位。例如,銀行轉帳工作:從一個帳號扣款並使另一個帳號增款,這兩個操作要么都執行,要么都不執行。

1、數據庫事務必須具備ACID特性,ACID是Atomic(原子性)、Consistency(一致性)、Isolation(隔離性)和Durability(持久性)的英文縮寫。

1)原子性

一個事務中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

2)一致性

事務的一致性指的是在一個事務執行之前和執行之后數據庫都必須處於一致性狀態。如果事務成功地完成,那么系統中所有變化將正確地應用,系統處於有效狀態。如果在事務中出現錯誤,那么系統中的所有變化將自動地回滾,系統返回到原始狀態。

3)隔離性

指的是在並發環境中,當不同的事務同時操縱相同的數據時,每個事務都有各自的完整數據空間。由並發事務所做的修改必須與任何其他並發事務所做的修改隔離。事務查看數據更新時,數據所處的狀態要么是另一事務修改它之前的狀態,要么是另一事務修改它之后的狀態,事務不會查看到中間狀態的數據。

4)持久性

指的是只要事務成功結束,它對數據庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。

2、事務的(ACID)特性是由關系數據庫管理系統(RDBMS,數據庫系統)來實現的。數據庫管理系統采用日志來保證事務的原子性、一致性和持久性。日志記錄了事務對數據庫所做的更新,如果某個事務在執行過程中發生錯誤,就可以根據日志,撤銷事務對數據庫已做的更新,使數據庫退回到執行事務前的初始狀態。數據庫管理系統采用鎖機制來實現事務的隔離性。當多個事務同時更新數據庫中相同的數據時,只允許持有鎖的事務能更新該數據,其他事務必須等待,直到前一個事務釋放了鎖,其他事務才有機會更新該數據。

3、在關系型數據庫中,事務的隔離性分為四個隔離級別,在解讀這四個級別前先介紹幾個關於讀數據的概念。
1)臟讀(Dirty Reads):所謂臟讀就是對臟數據的讀取,而臟數據所指的就是未提交的數據。也就是說,一個事務正在對一條記錄做修改,在這個事務完成並提交之前,這條數據是處於待定狀態的(可能提交也可能回滾),這時,第二個事務來讀取這條沒有提交的數據,並據此做進一步的處理,就會產生未提交的數據依賴關系,這種現象被稱為臟讀。

2)不可重復讀(Non-Repeatable Reads):一個事務先后讀取同一條記錄,但兩次讀取的數據不同,我們稱之為不可重復讀。也就是說,這個事務在兩次讀取之間該數據被其它事務所修改。

3)幻讀(Phantom Reads):一個事務按相同的查詢條件重新讀取以前檢索過的數據,卻發現其他事務插入了滿足其查詢條件的新數據,這種現象就稱為幻讀。


免責聲明!

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



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