什麼是資料庫事務以及特性?
阿新 • • 發佈:2019-01-04
資料庫事務定義:資料庫是面向多使用者的共享機制,所以資料庫管理要具有併發性和同步機制,而事務就是一種多個執行步驟的執行特性,即要麼同時執行相應的操作要麼一個也不執行。這樣就保證了在多個使用者操作同一資料時資料的一致性。這樣保證資料一致性的操作執行特性就稱為事務。
事務的特性:原子性、一致性、隔離性、永續性
事務的隔離級別
隔離級別:讀未提交、讀已提交、可重複讀、序列化
由隔離級別產生的問題:
髒讀資料 | 當第一個使用者修改資料時,第二個使用者在第一個使用者沒有確認修改之前讀取了該資料,這時可能會出現髒讀現象。如果第一個使用者確認了修改,第二個使用者檢索不到資料庫中所修改的資料,有時這種現象也稱為丟失修改。 |
---|---|
不可重複讀 | 當某一個使用者對某一行資料進行第一次讀取過程後,另外一個使用者對該資料進行了修改,從第一個使用者的角度來看,如果再次讀取原先的資料會發現與前次不同,這就是不可重複讀現象。 |
發生幻象 | 當第一個使用者檢查某張表的時候,沒有發現某個值X,但是在該使用者還沒操作完成之前,另外一個使用者插入了一個X值,結果,導致第一個使用者認為資料庫沒有X值,而實際上資料庫有這個值X。這就是幻象。 |
補充:使用者之間相互干擾,出現的以上問題,後果不堪設想。因此資料庫系統採用事務的概念來解決這個問題。
事務屬性
1、傳播行為
2、隔離規則
3、回滾規則
4、事務超時
5、是否只讀
事務管理型別
程式設計式事務管理
將事務管理程式碼嵌到業務方法中來控制事務的提交和回滾
缺點:必須在每個事務操作業務邏輯中包含額外的事務管理程式碼
宣告式事務管理
一般情況下比程式設計式事務好用。將事務管理程式碼從業務方法中分離出來,以宣告的方式來實現事務管理。將事務管理作為橫切關注點,通過aop方法模組化。Spring中通過Spring AOP框架支援宣告式事務管理。