事務處理的nuts和bolts 《二》

2021-08-29 09:17:51 字數 1321 閱讀 9711

[b]事務處理 - 體系 [/b]

看到了從頭開始建造乙個事務性應用的要點,考慮在乙個在 圖 2 中展示的事務處理體系下建造相同的應用。注意,儘管有多種可能的體系,它們將在後面的章節中討論, 圖 2 中所展示的代表了本質的特徵。

[img]

[b]應用構件[/b]

應用構件是事務性資源的客戶。它們是應用開發者用於實現商務事務的程式。

在事務管理器的幫助下,這些構件建立全域性事務, 如果需要的話傳播事務上下文,並在這些事務的範圍內操作事務性資源。這些構件不負責實現保護事務的 acid 屬性。但是作為應用邏輯的一部分 ,這些構件通常做是提交還是回滾乙個事務的決定。

應用構件:職責

[list]

[*] 建立和界定事務

[*] 傳播事務上下文

[*] 通過資源管理器運算元據

[/list]

[b]資源管理器[/b]

乙個資源管理器是乙個管理持久和穩定的資料儲存系統的構件,並且參與同事務管理器的兩段提交和恢復協議。

乙個資源管理器典型的是乙個穩定的儲存系統上的乙個驅動器或乙個包裝,有運算元據的介面(給應用構件), 並且為了參與由事務伺服器協調的兩階段提交和恢復協議。這個構件也可以,直接的或間接的,向事務管理器註冊資源,這樣事務管理器就可以追蹤所有參與事務的資源。這個過程叫做資源徵集。為了實現兩階段提交和恢復協議,資源管理器應該實現可能被恢復所使用的附加機制。

資源管理器提供兩套介面: 一套給應用構件用來連線和完成對資料的操作,另一套給事務管理器用來參與兩階段提交和恢復協議。

資源管理器:職責

[list]

[*] 向事務伺服器應徵資源

[*] 參與兩階段提交和恢復協議

[/list]

[b]事務管理器[/b]

事務管理器是乙個事務處理環境的核心構件。它的主要職責是當應用構件要求時建立事務,允許資源徵集和遣散,並指揮同資源管理器的兩階段提交或恢復協議。

在乙個事務被終止之前,在事務管理器所知道的多個資料上,多個構件和/或執行緒可以完成事務性操作。如果事務管理器允許的話,在事務最終完成之前,乙個事務可以被掛起或被繼續執行。

一旦應用發起了提交請求,事務管理器為乙個提交操作準備所有資源(通過指揮一次投票表決),並基於是否所有的資源都準備好了(就緒)提交,來發起對所有資源的乙個提交或回滾請求。

事務管理器:職責

[list]

[*] 建立和維護事務上下文

[*] 維護乙個事務和特定的資源間的關聯

[*] 發起並指揮兩階段提交和恢復協議

[*] 在開始兩階段提交和恢復過程之前向應用構件們做同步呼叫

[/list]

下面的章節討論事務處理相關的各種概念。

PB事務處理

1 資料視窗更新,只要dberror有錯誤,而事先沒有做過任何commit工作,那麼rollback可以回滾到上次commit位置,即上次commit後所有的資料將被回滾。2 如果是直接寫入sql語句,只要資料庫出現錯誤,那麼rollback可以回滾到上次commit的位置,即上次commit後所有...

MySQL事務處理

start transaction,commit和rollback語法 start transaction begin work commit work and no chain no release rollback work and no chain no release set autocom...

ASP事務處理

asp事務處理。測試資料庫為sql server,伺服器為本機,資料庫名為test,表名為a,兩個欄位id int 主鍵標識,num int set conn server.createobject adodb.connection strconn provider sqloledb.1 persi...