DB2 9.7自治事务的定义与相关事务背景


  本文标签:DB2 自治事务

  此文章主要向大家讲述的是DB2 9.7自治事务的定义与对其在实际操作中的一些事务背景的描述,我们大家都知道了解 IBM DB2® Version 9.7 for Linux®, UNIX®, and Windows® 中引入的自治事务特性  。您将获得有关自治事务的定义和创建方式的概述和示例  。

  简介

  本文将介绍 DB2 9.7自治事务特性  。自治事务与数据库管理员和应用程序开发人员都有密切的关系  。

  本文将讨论 DB2 9.7 for Linux, UNIX, and Windows  。掌握 DB2 命令行处理器(CLP)和 SQL PL 的知识将非常有帮助  。

  要运行本文中的示例,需要访问 DB2 9.7 for Linux, UNIX, and Windows 数据库  。从 参考资料 部分查找下载 DB2 试用版的链接  。

  了解一些事务背景

  事务是以文本、列(或同时使用两者)的形式表现的来自真实世界的实体,将由数据库管理系统处理  。它们可以作为针对数据库执行的操作,并且必须作为一组操作执行  。

  例如,从用户 A 的帐户将 X 金额传输到用户 B 的帐户,这个请求是一个非常简单的事务  。这个事务可以被分解为两个 SQL 语句,如清单 1 所示:

  清单 1. 简单事务的示例

  

  1. Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance - X, where UserName=A   
  2. Update table AccountInfo set CurrentBalanceCurrentBalance = CurrentBalance + X, where UserName=B  

  只有在两条 SQL 语句都能够成功更新表的情况下,事务才会得到成功调用  。为了确保两条语句都能够生效或都不生效,应用程序将以这样的方式运行:直到 COMMIT 发生之前,数据库不会做出任何更改  。发生 COMMIT 时,所有未提交的语句(自最近一次 COMMIT 之后的所有语句)将同时生效,确保数据的完整性  。这类似于禁用命令行处理器(CLP)的 AUTO COMMIT 行为,然后发出一组语句并手动完成 COMMIT 操作  。ROLLBACK 将移除所有未提交的修改  。因此 COMMIT 和 ROLLBACK 语句是事务实现的重要构建块  。

  自治事务简介

  DB2 9.7自治事务拥有自己的 COMMIT 和 ROLLBACK 范围,确保它的结果不会影响到调用方的未提交的变更  。此外,调用会话中的 COMMITs 和 ROLLBACKs 不应当影响自治事务本身完成时发生的最后更改  。

  注意,调用会话将被暂停,直到被调用的会话返回控制权  。自治事务的支持不应该视为支持并行执行会话  。

  创建自治事务

  在 DB2 中,自治事务通过自治过程实现  。存储过程为将语句绑定到块中提供了一种自然的方式  。要创建自治过程,需要在 CREATE PROCEDURE 语句中指定关键字 AUTONOMOUS,如清单 12 所示  。

  清单 2. CREATE PROCEDURE 语句示例

  

  1. CREATE OR REPLACE your_procedure_name  
  2. LANGUAGE SQL  
  3. AUTONOMOUS  
  4. BEGIN   
  5. do autonomous work ;  
  6. END 

  在调用自治过程时,将在独立的会话中执行,以提供必需的事务独立性  。成功的自治过程将使用隐式方式提交,而失败的自治过程将执行回滚  。无论哪一种情况,都不会影响调用事务  。