- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
资料库入门程式
第六篇 ? 交易管理(Transaction Management) 交易管理(Transaction Management) 是指管理一連串多個連續操作(Operations) 以完成一項邏輯工作(Logical Unit of Work) 之處理。例如銀行轉帳(Transfer of Money),從一個銀行帳戶(Account) 轉帳至另一帳戶,在邏輯上是一項工作;在操作上是一串多個連續操作之組合執行。 ? 本篇將詳細討論交易處理之概念(Concepts)、多個執行緒之並行管理(Concurrency Control)、與資料之重整更新(Problem Recovery)。 第二十章 ? 交易處理(Transaction) 20-1 簡介 當多個行程(Processes) 同時執行時,行程之間可相互影響、可分享記憶體(Memory)、可分享資料(Data),此時往往因管理不周嚴,使得資料失去一致性(Inconsistency)。 ? 因此、在多個行程同步並行時,如何保持資料的緊密性(Atomicity)、一致性(Consistency)、區隔性(Isolation)、持久性(Durability),是交易處理的一個重要環節,本章將深入探討之。 20-2交易處理概念(Transaction Concept) 交易處理(Transaction) 是執行一串多個連續操作(Operations)、進而完成一個單元邏輯工作(Logical Unit of Work)。在未討論資料庫交易處理之前,我們可以一般高階語言程式為例,於C:begin … end為一工作單元,其間之程式碼為一個交易處理;於Java:{…} 為一工作單元,其間之程式碼為一個交易處理。 ? 為確保資料的整體性(Integrity),資料庫系統應考量其交易處理要具有:緊密性(Atomicity)、區隔性(Isolation)、一致性(Consistency)、與持久性(Durability)。 20-3 交易處理狀態(Transaction State) 圖20-3 交易處理之過程可由數個狀態節點(States) 表示之,我們以各狀態之進度作設計判斷,狀態之間以箭頭連線為關鍵次序關係(如圖20-3): 20-5 Java/Access交易處理指令 為了執行交易處理,Java/Access指供方法程序setAutoCommit()、commit() 輔助執行。 ? 當設定setAutoCommit(false) 時,系統將關閉自動執行模式,程式碼有執行描述,但無實際執行動作;當逢commit()時,將描述的所有程式碼一併快速執行。因此、setAutoCommit(false) 可視為Begin Transaction,commit() 可視為Commit Transaction,交易行程(Transaction Processes) 居於兩者之間。 範例176:建立資料庫Bank176.accdb、於資料表Borrow以交易法則,新增一筆資料(即在執行時,不允許有其他因素之干擾)。 (12) 設計關鍵程式碼: con.setAutoCommit(false); (Begin Transaction) INSERT INTO Borrow VALUES (新增一筆資料) (ABCD, 1111, XYZ, 2000) mit(); (Commit Transaction) ? 其中BEGIN TRANSACTION 以指令con.setAutoCommit(false) 執行;COMMIT TRANSACTION 以指令mit() 執行,con為資料庫連接物件。 ? (2) 設計程式Transaction_176.java(如本書CD檔案)。 範例177:建立資料庫Bank177.accdb,使用資料表Deposit,從Johnson之帳戶212轉帳600元至Hayes之帳戶213,以交易法則執行。 (2) 設計關鍵程式碼: con.setAutoCommit(false); (Begin Transaction) UPDATE Deposit (從Johnson帳戶212轉出600元) SET balance = balance - 600 WHERE account_n
您可能关注的文档
- 蒙药寒水石化灰小剂药效学研究-世界科学技术—中医药现代化.PDF
- 蒸气养护与微波加热技术于新拌混凝土之研究.PDF
- 蒙塔奇诺,土地与葡萄酒 - Consorzio Brunello di Montalcino.PDF
- 蓝圆鲹蛋白的酶解过程动力学研究-高校化学工程学报.PDF
- 蓖麻的综合利用现状-药用植物资源平台.PDF
- 蓝牙机座 - Swissvoice.PDF
- 蒸烤箱调理盆专业.品质.安全.耐用.PDF
- 薄型静电消除器高频AC方式简单消除静电可调节喷嘴角度、能进行 .PDF
- 薄型化音箱优化设计-电子工程专辑.PDF
- 薄膜测量的椭偏仪法.PDF
- 财政票据管理系统:架构、功能与实践应用的深度剖析.docx
- 老挝工业污染控制政策:演进、实践与展望.docx
- 济南大学招生管理信息系统:设计架构与实践应用.docx
- 我国地方政府债务风险剖析与管控策略研究.docx
- 我国国有企业管理层收购的融资困境与法律规制优化路径探究.docx
- 我国地方政府应对突发性群体事件的深度剖析与策略构建.docx
- 我国政府部门高端人才储备战略论析.docx
- 以《人民日报》为镜:2003 - 2014年我国突发公共事件政府信息公开的多维度审视.docx
- 山东省新型农村社会养老保险制度试点的成效、问题与优化路径——基于双试点地区的深度剖析.docx
- 金融数字化浪潮下证券信息管理系统的深度剖析与创新实践.docx
文档评论(0)