深入理解分布式事务:原理与实战
上QQ阅读APP看书,第一时间看更新

1.3 本地事务

1.2节简单介绍了事务的ACID特性。本节主要介绍本地事务的基本概念及优缺点。

1.3.1 基本概念

在常见的计算机系统和应用系统中,很多事务是通过关系型数据库进行控制的。这种控制事务的方式是利用数据库本身的事务特性来实现,而在这种实现方式中,数据库和应用通常会被放在同一台服务器中,因此,这种基于关系型数据库的事务也可以称作本地事务或者传统事务。

本地事务使用常见的执行模式,可以使用如下伪代码来表示。


transaction begin
insert into 表名 (字段名列表) values (值列表)
update 表名 set 字段名 = 字段值 where id = id值
delete from 表名 where id = id值
transaction commit/rollback

另外,本地事务也具有一些特征。以下列举几个本地事务具有的典型特征。

1)一次事务过程中只能连接一个支持事务的数据库,这里的数据库一般指的是关系型数据库。

2)事务的执行结果必须满足ACID特性。

3)事务的执行过程会用到数据库本身的锁机制。

1.3.2 本地事务的执行流程

本地事务的执行流程如图1-2所示。

图1-2 本地事务的执行流程

从图1-2中可以看出:

1)客户端开始事务操作之前,需要开启一个连接会话;

2)开始会话后,客户端发起开启事务的指令;

3)事务开启后,客户端发送各种SQL语句处理数据;

4)正常情况下,客户端会发起提交事务的指令,如果发生异常情况,客户端会发起回滚事务的指令;

5)上述流程完成后,关闭会话。

本地事务是由资源管理器在本地进行管理的。

1.3.3 本地事务的优缺点

本地事务的优点总结如下。

1)支持严格的ACID特性,这也是本地事务得以实现的基础。

2)事务可靠,一般不会出现异常情况。

3)本地事务的执行效率比较高。

4)事务的状态可以只在数据库中进行维护,上层的应用不必理会事务的具体状态。

5)应用的编程模型比较简单,不会涉及复杂的网络通信。

本地事务的缺点总结如下。

1)不具备分布式事务的处理能力。

2)一次事务过程中只能连接一个支持事务的数据库,即不能用于多个事务性数据库。