資料庫基礎3 事務管理

2021-06-25 17:29:54 字數 1291 閱讀 6869

事務管理概述

「事務」是乙個邏輯工作單元,它包括一系列的操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。

資料庫系統必須以一種能避免引入不一致性的方式來管理事物的併發執行

事務包括4個基本特性,也就是我們常說的acid,其中包括:

1.atomic(原子性,這裡的「原子」即代表事務中的各個操作不可分割)

事務中包含的操作被看作是乙個邏輯單元,這個邏輯單元中的操作要麼全部成功,要麼全部失敗。

2.consistency(一致性)

一致性意味著,只有合法的資料才會被寫入資料庫,否則會回滾到最初狀態。事務確保資料庫的狀態從乙個一致狀態轉變為另乙個一致狀態。

3.isolation(隔離性)

多個事務併發執行時,乙個事務的執行不應影響其他事務的執行。

4.durability(永續性)

已被提交的事務對資料庫的修改應該永久儲存在資料庫中。

故障型別

事務故障(裸機故障 系統錯誤)  資料庫可能是在不一致的狀態,強行回滾事物

系統故障 (主存內容丟失,外存內容完好)  系統重啟時,恢復子系統,必須重做已經提交的事務

磁碟故障(磁碟塊上內容丟失) 磁碟備份

基於日誌的恢復:

事務開始日誌記錄:表示事務開始

更新日誌在ti時刻對資料xj進行修改值分別為vi,vj

事務提交

事務終止

利用更新日誌記錄中的改前值可以進行undo操作,撤銷已經做好的修改操作

利用redo,重做已完成的操作,將資料項置為修改後的新值

注意:在寫日誌的時候按照併發執行的順序

現將日誌寫到外存中,再修將資料庫修改寫至外存中

事務故障恢復步驟:

反向掃瞄日誌檔案,查詢該事務的更新操作

對每乙個操作進行undo操作,將修改前的值寫入資料庫

如此下去,直至到事務的開始日誌

系統故障恢復:

正向掃瞄日誌

將故障發生前已經提交的加入redo佇列

將故障發生時還沒有完成的事務加入undo佇列

對undo佇列,反向掃瞄,執行逆操作

對redo佇列,正向掃瞄,重新執行操作

資料庫事務管理

一 事務的特性 acid 二 3個問題 幻讀和不可重複讀看起來一樣,但鎖的機制不同,幻讀對應insert和delete 操作,不可重複讀對應update操作 具體說就是不可重複讀鎖定一行資料,是行鎖,幻讀鎖定整個條件區域,是序列鎖。三 樂觀鎖和悲觀所 以上說的鎖,通過資料庫的鎖機制控制,鎖定後其他操...

Spring資料庫事務管理

事務 transaction 是併發控制的基本單位。所謂的事務,它是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。例如,銀行轉賬工作 從乙個賬號扣款並使另乙個賬號增款,這兩個操作要麼都執行,要麼都不執行,在關聯式資料庫中,乙個事務可以是一條sql語句 一組sql語句或整...

深入Spring資料庫事務管理

相關問題 一 transactional的失效問題 1.對於靜態 static 方法和非public方法,註解 transactional是失效的。2.自呼叫,就是乙個類的乙個方法去呼叫自身另外乙個方法的過程。如下 autowired private roledao roledao transact...