1.2节简单介绍了事务的ACID特性。本节主要介绍本地事务的基本概念及优缺点。
在常见的计算机系统和应用系统中,很多事务是通过关系型数据库进行控制的。这种控制事务的方式是利用数据库本身的事务特性来实现,而在这种实现方式中,数据库和应用通常会被放在同一台服务器中,因此,这种基于关系型数据库的事务也可以称作本地事务或者传统事务。
本地事务使用常见的执行模式,可以使用如下伪代码来表示。
transaction begin insert into 表名 (字段名列表) values (值列表) update 表名 set 字段名 = 字段值 where id = id值 delete from 表名 where id = id值 transaction commit/rollback
另外,本地事务也具有一些特征。以下列举几个本地事务具有的典型特征。
1)一次事务过程中只能连接一个支持事务的数据库,这里的数据库一般指的是关系型数据库。
2)事务的执行结果必须满足ACID特性。
3)事务的执行过程会用到数据库本身的锁机制。
本地事务的执行流程如图1-2所示。
图1-2 本地事务的执行流程
从图1-2中可以看出:
1)客户端开始事务操作之前,需要开启一个连接会话;
2)开始会话后,客户端发起开启事务的指令;
3)事务开启后,客户端发送各种SQL语句处理数据;
4)正常情况下,客户端会发起提交事务的指令,如果发生异常情况,客户端会发起回滚事务的指令;
5)上述流程完成后,关闭会话。
本地事务是由资源管理器在本地进行管理的。
本地事务的优点总结如下。
1)支持严格的ACID特性,这也是本地事务得以实现的基础。
2)事务可靠,一般不会出现异常情况。
3)本地事务的执行效率比较高。
4)事务的状态可以只在数据库中进行维护,上层的应用不必理会事务的具体状态。
5)应用的编程模型比较简单,不会涉及复杂的网络通信。
本地事务的缺点总结如下。
1)不具备分布式事务的处理能力。
2)一次事务过程中只能连接一个支持事务的数据库,即不能用于多个事务性数据库。