一、概念:
1募闲、事務(Transaction)指訪問并可能更新數(shù)據(jù)庫中各種數(shù)據(jù)項的一個程序執(zhí)行單元(unit)光坝。
2、事務通常由高級數(shù)據(jù)庫操作語言或編程語言(如SQL,C++或Java)書寫的用戶程序的執(zhí)行所引起鬼雀,并用形如begin transaction和end transaction語句(或函數(shù)調(diào)用)來界定。
3扮超、事務由事務開始(begin transaction)和事務結(jié)束(end transaction)之間執(zhí)行的全體操作組成取刃。
在關(guān)系數(shù)據(jù)庫中蹋肮,一個事務可以是一條SQL語句出刷,一組SQL語句或整個程序。
二坯辩、特性:
1馁龟、事務是恢復和并發(fā)控制的基本單位。
2漆魔、事務應該具有4個屬性:原子性坷檩、一致性却音、隔離性、持久性矢炼。這四個屬性通常稱為ACID特性系瓢。
①原子性(atomicity)。一個事務是一個不可分割的工作單位句灌,事務中包括的諸操作要么都做夷陋,要么都不做。
②一致性(consistency)胰锌。事務必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)骗绕。一致性與原子性是密切相關(guān)的。
③隔離性(isolation)资昧。一個事務的執(zhí)行不能被其他事務干擾酬土。即一個事物內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能相互干擾格带。
④持久性(durability)撤缴。持久性也稱永久性(permanence),指一個事務一旦提交叽唱,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應該是永久性的腹泌。接下來的其他操作或故障不應該對其有任何影響。
三尔觉、事務類型:
(1)手動事務:
手動事務允許顯式處理若干過程凉袱,這些過程包括:開始事務、控制事務邊界內(nèi)的每個連接和資源筆記侦铜、確定事務結(jié)果(提交或中止)以及結(jié)束事務专甩。
盡管此模型提供了對事務的標準控制,但它缺少一些內(nèi)置于自動事務模型的簡化操作钉稍。比如:在手動事務中數(shù)據(jù)存儲區(qū)之間沒有自動登記和協(xié)調(diào)涤躲。此外,與自動事務不同贡未,手動事務中事務不在對象間流動种樱。
如果選擇手動控制分布式事務,則必須管理恢復俊卤、并發(fā)嫩挤、安全性和完整性。也就是說消恍,必須應用維護與事務處理關(guān)聯(lián)的ACID屬性所需的所有編程方法岂昭。
(2)自動事務:
.NET頁、XML Web services方法或.NET Framework類一旦被標記為參與事務狠怨,它們將自動在事務范圍內(nèi)執(zhí)行约啊。
您可以通過在.NET頁邑遏、XML Web services方法或.NET Framework類中設置一個事務屬性值來控制對象的事務行為。特性值反過來確定實例化對象的事務性行為恰矩。
因此记盒,根據(jù)聲明特性值的不同,對象將自動參與現(xiàn)有事務或正在進行的事務外傅,稱為新事務的根或者根本不參與事務孽鸡。
聲明事務屬性的語法在.NET Framework類、.NET頁和XML Web services方法中稍有不同栏豺。
聲明性事務特性指定對象如何參與事務彬碱,如何以編程方式被配置。
盡管如此聲明性級別表示事務的邏輯奥洼,但它是一個已從物理事務中移除的步驟巷疼。
物理事務在事務性對象訪問數(shù)據(jù)庫或消息隊列這樣的數(shù)據(jù)資源時發(fā)生。
與對象關(guān)聯(lián)的事物自動流向合適的資源管理器灵奖,諸如OLE DB嚼沿、開放式數(shù)據(jù)庫鏈接(ODBC)或ActiveX數(shù)據(jù)對象(ADO)的關(guān)聯(lián)驅(qū)動程序在對象的上下文中查找事務,并通過分布式事務處理協(xié)調(diào)器(DTC)在此事務中登記瓷患。整個事務自動發(fā)生骡尽。