MySQL事务介绍

从事务理论的角度来说,可以把事务分为以下几种类型:
扁平事务类型(Flat Transaction)
带有保存点的扁平事务(Flat Transaction with Savepoints)
链事务(Chained Transactions)
嵌套事务(Nested  Transactions)
分布式事务(Distributed Transactions)

扁平事务(Flat transaction)是事务类型中最简单的一种,但在实际生产环境中,这可能是使用最为频繁的事务,在扁平事务中,所有操作都处于 同一层次,其由BEGIN WORK 开始,由commit work 或 ROLLBACK work 结束,期间的操作都执行,要么回滚,因此 扁平事务是应用程序成为原子操作的基本组成模型。
扁平事务的主要限制是不能提交或者回滚事务的某一部分,或分几个步骤提交,下面给出一个扁平事务不足以支持的例子,列如用户在旅行网站上进行自己的旅行度假计划,用户设想从杭州到意大利的弗罗伦萨,这两个城市之间没有直达的班机,需要用户预订并转乘航班,或者需要搭火车等待,用户预订旅行度假的事务为:
BEGIN WORK
S1 预订杭州到上海的高铁
S2 上海浦东国际机场坐大巴,预订去米兰的航班
S3 在米兰转火车前往弗罗伦萨,预订去佛罗伦萨的火车
如果到S3 的时候我们发现 飞到米兰的事件太晚,那么我们此时取消订单,这样的话我们的事务就要全部回滚,这个代价就显得有点大了。因此出现了带有保存点的扁平事务。

带有保存点的扁平事务(Flat Transaction with Savepoint) 除了支持扁平事务支持的操作外,容许在事务执行过程中回滚到同一事务中较早的一个状态,这是因为某些事务可能在执行过程中出现的错误并不会导致所有的操作都无效,放弃整个事务不合乎要求,开销也太大。保存点(Savepoint)用来通知系统应该记住事务当前的状态,以便当之后发生错误时,事务能回到保存点当时的状态。
对于扁平的事务来说,其隐式地设置了一个保存点,然而在整个事务中,只有这一个保存点,因此,回滚只能回滚到事务开始时的状态。保存点用SAVE WORK 函数来建立,通知系统记录当前的状态,当出现问题时,保存点能用作内部的重启动点,根据应用逻辑,决定是回到最近一个保存点还是其他更早的保存点,

链事务(Chained Transaction) 可视为保存点模式的一种变种。带有保存点的扁平事务,当发生系崩溃时,所有的保存点都将消失,因为其保存点是易失的(volatilc). 而非持久的(persistent)事务需要从开始处重新执行,而不能从最近的一个保存点继续执行。
链事务的思想是:在提交一个事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务,注意.提交事务操作和开始下一个事务操作将合并为一个原子操作,这意味着下一个事务将看到上一个事务的结果,就好像在一个事务中进行一样。链事务与带有保存点的扁平事务不同的是,带有保存点的扁平事务能回滚到任意正确的保存点,而链事务中的回滚仅限与当前事务,即只能恢复到最近一个的保存点,对于锁的处理,两者不相同,链事务在执行COMMIt 后释放了当前事务所持有的锁,而带有保存点的扁平事务 不影响所持有的锁。

嵌套事务(Nested Transaction) 是一个层次结构框架,由一个顶层事务(top-level transaction) 控制着各个层次的事务。顶层事务之下嵌套的事务被成为子事务(subtransaction) ,其控制每一个局部的变换,嵌套事务的层次结构。
(1)嵌套事务是由若干事务组成的一棵树,子树既可以是嵌套事务,也可以是扁平事务。
(2)处在叶节点的事务是扁平事务,但是每个子事务从根到叶节点的距离可以是不同的。
(3)位于根节点的事务称为顶层事务,其他事务称为子事务,事务的前驱称为父事务,事务的下一层称为儿子事务(child).
(4)子事务既可以提交也可以回滚,但是他的提交操作并不马上生效,除非其父事务提交,任何子事务都在顶层食物提交后才真正的提交。
(5) 树中的任意一个事务的回滚会引起它的所有子事务一同回滚,故子事务仅保留A C I 不具有D的特性。
实际的工作是交由叶子节点来完成的,即只有叶子节点的事务才能访问数据库、发送信息、获取其他类型的资源,而高层的事务仅负责逻辑控制,决定何时调用相关的子事务。即使一个系统不支持嵌套事务,用户也可以通过保存点技术来模拟嵌套事务,

分布式事务(Distributed Transactions) 通常是一个在分布环境下运行的扁平事务,因此需要根据数据所在位置访问网络中的不同节点。

...........................................................................................................................................................................................未完待续下篇文章《事务的实现》

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30176559/viewspace-1841122/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30176559/viewspace-1841122/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值