从事务理论的角度来看,可以把事务分为以下五种类型:
-
扁平事务(Flat Transactions)
-
带有保存点的扁平事务(Flat Transactions with Savepoints)
-
链事务(Chained Transactions)
-
嵌套事务(Nested Transactions)
-
分布式事务(Distributed Transactions)
下面分别介绍一下
1、扁平事务
扁平事务 是事务类型中最简单的一种,但是在实际生产环境中,这可能是使用最频繁的事务,在扁平事务中,所有操作都处于同一层次,其由BEGIN WORK开始,由COMMIT WORK或ROLLBACK WORK结束,其间的操作是源自的,要么都执行,要么都回滚,因此扁平事务是应用程序称为原子操作的的基本组成模块
下面显示了扁平事务的三种不同结果:
给出的扁平事务的三种情况,同时也给出了一个典型的事务处理应用中,每个结果大概占用的百分比。再次提醒,扁平事务虽然简单,但是在实际环境中使用最为频繁,也正因为其简单,使用频繁,故每个数据库系统都实现了对扁平事务的支持。
扁平事务的主要限制是不能提交或者回滚事务的某一部分,或分几个步骤提交。
下面给出一个扁平事务不足以支持的例子。例如用户在旅行网站上进行自己的旅行度假计划,用户设想从杭州到意大利的佛罗伦萨,这两个城市没有直达的班机,需要用户预订并转呈航班,需要或者搭火车等待。用户预订旅行度假的事务为
S1:预订杭州到上海的高铁
S2:上海浦东国际机场坐飞机,预订到米兰的航班
S3:在米兰转火车前往佛罗伦萨,预订去佛罗伦萨的火车
但是当用户执行到S3时,发现由于飞机到达米兰的时间太晚,已经没有当天的火车,这时用户希望在米兰当地住一晚,第二天出发去佛罗伦萨。这时如果事务为扁平事务,需要回滚之前S1 S2 S3的三个操作