自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快速掌握ADO.NET資源管理器原理機(jī)制

開發(fā) 后端
ADO.NET資源管理器的持久性(反之為可變性)是指資源管理器是否支持故障恢復(fù),文章做出了詳細(xì)的介紹,希望對大家有幫助。

ADO.NET還是比較常用的,于是我研究了一下ADO.NET資源管理器,在這里拿出來和大家分享一下,希望對大家有用。事務(wù)中使用的每個(gè)資源都由資源管理器進(jìn)行管理,而后者的操作則由事務(wù)管理器進(jìn)行協(xié)調(diào)。資源管理器與事務(wù)管理器協(xié)調(diào)工作,為應(yīng)用程序提供了原子性和隔離性的保證。例如,Microsoft SQL Server、持久消息隊(duì)列、內(nèi)存中的哈希表都是ADO.NET資源管理器。

#T#ADO.NET資源管理器可管理持久或可變數(shù)據(jù)。資源管理器的持久性(反之為可變性)是指資源管理器是否支持故障恢復(fù)。如果資源管理器支持故障恢復(fù),則它會(huì)在第 1 階段(準(zhǔn)備階段)將數(shù)據(jù)保存到持久存儲(chǔ)區(qū)中;這樣,一旦資源管理器出現(xiàn)故障,它就可在恢復(fù)時(shí)在事務(wù)中重新登記,并根據(jù)從 TM 接收到的通知執(zhí)行適當(dāng)?shù)牟僮?。通常,可變資源管理器管理如內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)之類的可變資源(如內(nèi)存中的事務(wù)處理哈希表),而持久資源管理器則管理具有更持久的后備存儲(chǔ)區(qū)的資源(例如,其后備存儲(chǔ)區(qū)為磁盤的數(shù)據(jù)庫)。

資源若要參與事務(wù),它必須在事務(wù)中進(jìn)行登記。Transaction 類定義了一組提供此功能的方法,這些方法的名稱以 Enlist 開頭。不同的 Enlist 方法對應(yīng)于資源管理器可能具有的不同登記類型。具體來說,EnlistVolatile 方法用于登記可變資源,而 EnlistDurable 方法則用于登記持久資源。為了簡單起見,在根據(jù)資源的持久性支持決定是使用 EnlistDurable 還是 EnlistVolatile 方法后,應(yīng)為資源管理器實(shí)現(xiàn) IEnlistmentNotification 接口,從而將資源登記為參與兩階段提交 (2PC)。有關(guān) 2PC 的更多信息,請參見在單階段和多階段中提交事務(wù)。

通過登記,資源管理器可確保在事務(wù)提交或中止時(shí)能夠從事務(wù)管理器獲取回調(diào)。每個(gè)登記都有一個(gè) IEnlistmentNotification 實(shí)例。通常情況下,在每個(gè)事務(wù)中只執(zhí)行一次登記,但資源管理器可選擇在同一事務(wù)中執(zhí)行多次登記。

登記后,ADO.NET資源管理器會(huì)對事務(wù)的請求做出響應(yīng)。持久資源管理器存儲(chǔ)了足夠的信息,可允許在它所管理的資源上撤消或重做事務(wù)的工作。可以使用許多方法來實(shí)現(xiàn)此目的;最常采用的兩種方法是保存數(shù)據(jù)版本和保存更改日志。

當(dāng)應(yīng)用程序提交事務(wù)時(shí),事務(wù)管理器會(huì)啟動(dòng)兩階段提交協(xié)議。事務(wù)管理器先向每個(gè)已登記的資源管理器詢問它是否已準(zhǔn)備好提交事務(wù)。資源管理器必須準(zhǔn)備好提交,即它自身準(zhǔn)備好提交或中止事務(wù)。

在準(zhǔn)備階段,持久資源管理器會(huì)將舊數(shù)據(jù)和新數(shù)據(jù)記錄到固定存儲(chǔ)區(qū)中,以便即使系統(tǒng)出現(xiàn)故障,資源管理器也可恢復(fù)數(shù)據(jù)。如果資源管理器準(zhǔn)備就緒,就會(huì)向事務(wù)管理器通知有關(guān)它是提交還是中止事務(wù)的投票。如果有任何資源管理器報(bào)告準(zhǔn)備失敗,則事務(wù)管理器會(huì)將回滾命令發(fā)送給每個(gè)資源管理器,并向應(yīng)用程序指出提交失敗。

在準(zhǔn)備就緒后,資源管理器必須等待,直到它在第 2 階段中從事務(wù)管理器獲取提交或中止回調(diào)為止。通常,整個(gè)準(zhǔn)備和提交協(xié)議不到一秒即可完成。如果發(fā)生系統(tǒng)或通信故障,則提交或中止通知可能無法在幾分鐘或幾小時(shí)內(nèi)送達(dá)。在此期間,資源管理器將無法確定事務(wù)的結(jié)果,即不知道事務(wù)是已提交還是已中止。當(dāng)資源管理器不確定事務(wù)狀態(tài)時(shí),它會(huì)通過使事務(wù)處于鎖定狀態(tài)來保留已修改的數(shù)據(jù),從而將這些更改與任何其他事務(wù)隔離開。

如果資源管理器發(fā)生故障,則除了在發(fā)生故障之前已準(zhǔn)備或提交的事務(wù)之外,其余所有已登記事務(wù)都將中止。當(dāng)持久資源管理器重新啟動(dòng)時(shí),它會(huì)通過檢索在準(zhǔn)備階段編寫的準(zhǔn)備信息重新構(gòu)建資源的已提交狀態(tài),并相應(yīng)地提交或中止這些事務(wù)。

總之,兩階段提交協(xié)議和資源管理器共同使事務(wù)具有了原子性和持久性。

Transaction 類還提供了 EnlistPromotableSinglePhase 方法來登記可提升的單階段登記 (PSPE)。這使持久資源管理器 (RM) 可承載和“擁有”以后可在需要時(shí)升級(jí)為由 MSDTC 進(jìn)行管理的事務(wù)。有關(guān)此內(nèi)容的更多信息,請參見使用單階段提交和可提升的單階段通知進(jìn)行優(yōu)化。

 

責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2009-06-30 12:15:09

資源管理器Oracle性能

2009-11-11 11:08:03

ADO.NET存儲(chǔ)過程

2011-08-09 16:12:39

Windows7資源管理器

2009-11-11 17:24:59

ADO.NET連接管理

2009-11-12 09:36:32

ADO.NET Sql

2009-11-12 10:32:47

ADO.NET技術(shù)

2010-01-08 08:54:41

Windows 7資源管理器

2013-04-18 15:53:46

SLURM開源分布式資源管理

2009-02-17 20:16:00

Vista加標(biāo)題資源管理器

2011-02-23 10:06:25

konqueror

2009-11-13 17:20:35

ADO.NET數(shù)據(jù)集工

2012-08-27 14:01:18

VS 2012

2012-07-30 15:22:21

Win 7操作系統(tǒng)

2010-01-14 09:07:31

Windows 7導(dǎo)航面板

2011-08-19 10:31:08

資源管理器

2009-09-07 09:08:50

Windows 7資源管理器鏈接

2023-08-29 06:22:18

Windows 10微軟

2011-08-30 09:45:04

Windows 8

2019-07-18 09:56:50

Windows 10資源管理器文件

2009-10-10 11:47:26

服務(wù)器測試方案
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)