事務(Transaction)的特性和狀態


事務管理

事務(Transaction):
1、構成單一邏輯工作單元的操作集合
DBMS中的用戶程序
DBMS外的可執行程序
對數據庫的讀/寫操作序列
2、讀
從數據庫中讀取數據,首先從磁盤中讀到內存(Buffer Pool),然后賦給變量。
3、寫
先完成內存中的數據復制,然后寫入磁盤。

事務的特性-ACID:
原子性(Atomicity)
一致性(Consistency)
隔離性(Isolation)
持久性(Durability)

事務的特性-原子性:
事務中的操作,要么全做成,要么都不做
事務是不可拆分的
事務必須以 Commit/Rollback 結束

事務的特性-一致性:
單獨運行的事務,必須保證保持數據庫的一致狀態
從一個一致狀態遷移到另一個一致狀態
與原子性相關

事務的特性-隔離性:
多個並發事務之間不能相互干擾
並發不影響事務的執行

事務的特性-持久性:
一旦事務成功完成(Commit),它對數據庫的更新應該是持久的
即使在寫入磁盤之前,系統發生故障
在下次啟動之后,也應保障數據更新的有效

事務及事務管理器:
恢復和並發控制是事務管理的重要組成部分
恢復管理部件負責保證事務的原子性與持久性
並發控制部件負責事務的並發控制機制,實現事務的隔離性與一致性
事務管理器實現事務的ACID

事務的提交與回滾:
提交( Commit 
通知事務管理器一個邏輯工作單元已完成,所做的更新操作可以被提交或永久保留
表明事務成功地結束
執行有效性檢驗
回滾( RollBack)
通知事務管理器事務未能正常完成,數據庫可能處於不一致狀態,當前事務所做的所有更新操作必須撤消
表明事務不成功地結束

事務的狀態:
活動狀態(Active),初始狀態,事務正在執行時處於此狀態
部分提交狀態,事務的最后一條語句被執行后
失敗狀態,發現正常的操作不能繼續后
中止狀態,事務回滾且數據庫已恢復到事務開始時的狀態
重啟事務——不是由於內部邏輯錯誤導致的故障
殺死事務
提交狀態,事務成功完成

事務的並發:
多個事務可能同時(交叉地)在系統中運行
提高處理器、磁盤的利用率
減少等待時間
多個事務並發運行,由事務管理器進行調度
可串行化調度
並發運行的結果,與事務按某一順序串行運行的結果等同

    • PROPAGATION_REQUIRED
      Spring默認的傳播機制,能滿足絕大部分業務需求,如果外層有事務,則當前事務加入到外層事務,一塊提交,一塊回滾。如果外層沒有事務,新建一個事務執行
    • PROPAGATION_REQUES_NEW
      該事務傳播機制是每次都會新開啟一個事務,同時把外層事務掛起,當當前事務執行完畢,恢復上層事務的執行。如果外層沒有事務,執行當前新開啟的事務即可
    • PROPAGATION_SUPPORT
      如果外層有事務,則加入外層事務,如果外層沒有事務,則直接使用非事務方式執行。完全依賴外層的事務
    • PROPAGATION_NOT_SUPPORT
      該傳播機制不支持事務,如果外層存在事務則掛起,執行完當前代碼,則恢復外層事務,無論是否異常都不會回滾當前的代碼
    • PROPAGATION_NEVER
      該傳播機制不支持外層事務,即如果外層有事務就拋出異常
    • PROPAGATION_MANDATORY
      與NEVER相反,如果外層沒有事務,則拋出異常
    • PROPAGATION_NESTED
      該傳播機制的特點是可以保存狀態保存點,當前事務回滾到某一個點,從而避免所有的嵌套事務都回滾,即各自回滾各自的,如果子事務沒有把異常吃掉,基本還是會引起全部回滾的。


免責聲明!

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



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