DB2 9.7自治事務(wù)的定義與相關(guān)事務(wù)背景
此文章主要向大家講述的是DB2 9.7自治事務(wù)的定義與對(duì)其在實(shí)際操作中的一些事務(wù)背景的描述,我們大家都知道了解 IBM DB2® Version 9.7 for Linux®, UNIX®, and Windows® 中引入的自治事務(wù)特性。您將獲得有關(guān)自治事務(wù)的定義和創(chuàng)建方式的概述和示例。
簡(jiǎn)介
本文將介紹 DB2 9.7自治事務(wù)特性。自治事務(wù)與數(shù)據(jù)庫(kù)管理員和應(yīng)用程序開(kāi)發(fā)人員都有密切的關(guān)系。
本文將討論 DB2 9.7 for Linux, UNIX, and Windows。掌握 DB2 命令行處理器(CLP)和 SQL PL 的知識(shí)將非常有幫助。
要運(yùn)行本文中的示例,需要訪(fǎng)問(wèn) DB2 9.7 for Linux, UNIX, and Windows 數(shù)據(jù)庫(kù)。從 參考資料 部分查找下載 DB2 試用版的鏈接。
了解一些事務(wù)背景
事務(wù)是以文本、列(或同時(shí)使用兩者)的形式表現(xiàn)的來(lái)自真實(shí)世界的實(shí)體,將由數(shù)據(jù)庫(kù)管理系統(tǒng)處理。它們可以作為針對(duì)數(shù)據(jù)庫(kù)執(zhí)行的操作,并且必須作為一組操作執(zhí)行。
例如,從用戶(hù) A 的帳戶(hù)將 X 金額傳輸?shù)接脩?hù) B 的帳戶(hù),這個(gè)請(qǐng)求是一個(gè)非常簡(jiǎn)單的事務(wù)。這個(gè)事務(wù)可以被分解為兩個(gè) SQL 語(yǔ)句,如清單 1 所示:
清單 1. 簡(jiǎn)單事務(wù)的示例
- Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance - X, where UserName=A
- Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance + X, where UserName=B
只有在兩條 SQL 語(yǔ)句都能夠成功更新表的情況下,事務(wù)才會(huì)得到成功調(diào)用。為了確保兩條語(yǔ)句都能夠生效或都不生效,應(yīng)用程序?qū)⒁赃@樣的方式運(yùn)行:直到 COMMIT 發(fā)生之前,數(shù)據(jù)庫(kù)不會(huì)做出任何更改。發(fā)生 COMMIT 時(shí),所有未提交的語(yǔ)句(自最近一次 COMMIT 之后的所有語(yǔ)句)將同時(shí)生效,確保數(shù)據(jù)的完整性。這類(lèi)似于禁用命令行處理器(CLP)的 AUTO COMMIT 行為,然后發(fā)出一組語(yǔ)句并手動(dòng)完成 COMMIT 操作。ROLLBACK 將移除所有未提交的修改。因此 COMMIT 和 ROLLBACK 語(yǔ)句是事務(wù)實(shí)現(xiàn)的重要構(gòu)建塊。
自治事務(wù)簡(jiǎn)介
DB2 9.7自治事務(wù)擁有自己的 COMMIT 和 ROLLBACK 范圍,確保它的結(jié)果不會(huì)影響到調(diào)用方的未提交的變更。此外,調(diào)用會(huì)話(huà)中的 COMMITs 和 ROLLBACKs 不應(yīng)當(dāng)影響自治事務(wù)本身完成時(shí)發(fā)生的***更改。
注意,調(diào)用會(huì)話(huà)將被暫停,直到被調(diào)用的會(huì)話(huà)返回控制權(quán)。自治事務(wù)的支持不應(yīng)該視為支持并行執(zhí)行會(huì)話(huà)。
創(chuàng)建自治事務(wù)
在 DB2 中,自治事務(wù)通過(guò)自治過(guò)程實(shí)現(xiàn)。存儲(chǔ)過(guò)程為將語(yǔ)句綁定到塊中提供了一種自然的方式。要?jiǎng)?chuàng)建自治過(guò)程,需要在 CREATE PROCEDURE 語(yǔ)句中指定關(guān)鍵字 AUTONOMOUS,如清單 12 所示。
清單 2. CREATE PROCEDURE 語(yǔ)句示例
- CREATE OR REPLACE your_procedure_name
- LANGUAGE SQL
- AUTONOMOUS
- BEGIN
- do autonomous work ;
- END
在調(diào)用自治過(guò)程時(shí),將在獨(dú)立的會(huì)話(huà)中執(zhí)行,以提供必需的事務(wù)獨(dú)立性。成功的自治過(guò)程將使用隱式方式提交,而失敗的自治過(guò)程將執(zhí)行回滾。無(wú)論哪一種情況,都不會(huì)影響調(diào)用事務(wù)。
【編輯推薦】