【MySQL】(七)事务

个人我的博客 http://www.haxianhe.com/数据库

数据库系统引入事务的主要目的:事务会把数据库从一种状态转换为另外一种一致状态。在数据库提交工做时,能够确保要么全部修改都已经保存了,要么全部修改都不保存。
InnoDB存储引擎中的事务彻底符合ACID特性。ACID是如下4个词的缩写:
原子性(atomicity)
一致性(consistency)
隔离性(isolation)
持久性(durability)
本篇文章主要关注事务的原子性这一律念,并说明怎样正确使用事务及编写正确的应用程序,避免在事务方面养成一些很差的习惯。网络

一、认识事务

1.一、概述

事务可由一条很是简单的SQL语句组成,也能够由一组复杂的SQL语句组成。事务是访问并更新数据库中各类数据项的一个程序执行单元。在事务中的操做,要么都作修改,要么都不作,这就是事务的目的,也是事务模型区别与文件系统的重要特征之一。并发

A(Atomicity),原子性。即一组操做要么都作,要么都不作。
C(consistency),一致性。一致性指从事务将数据库从一种状态转变为下一种一致的状态。
I(isolation),隔离性。隔离性还有其余的称呼,如并发控制、可串行化、锁等。事务的隔离性要求每一个读写事务的对象对其余事务的操做对象能相互分离,即该事务提交前对其余事务都不可见,同常这使用锁来实现。当前数据库系统中都提供了一种粒度锁的策略,容许事务仅锁住一个实体对象的子集,以此来提升事务之间的并发度。
D(durability),持久性。事务一旦提交,其结果就是永久性的。框架

1.二、分类

从事务理论的角度来讲,能够把事务分为如下几种类型:分布式

  • 扁平事务
  • 带有保存点的扁平事务
  • 链事务
  • 嵌套事务
  • 分布式事务

扁平事务是事务类型中最简单的一种,但在实际生产环境中,这多是使用最为频繁的事务。在扁平事务中,全部操做都处于同一层次,其由BEGIN WORK开始,由COMMIT WORK和ROLLBACK WORK结束,其间的操做是原子的,要么都执行,要么都回滚。所以扁平事务是应用程序称为原子操做的基本组成模块。函数

带有保存点的扁平事务除了支持扁平事务支持的操做外,容许在事务执行过程当中回滚到同一事务中较早的一个状态。这是由于某些事务可能在执行过程当中出现的错误并不会致使全部的操做都无效,放弃整个事务不合乎要求,开销也大。保存点用来通知系统应该记住事务当前的状态,以便当以后发生错误时,事务能回到保存点当时的状态。atom

对于扁平的事务来讲,其隐式地设置了一个保存点。然而在整个事务中,只有这一个保存点,所以,回滚只能回滚到事务开始时的状态。保存点用SAVE WORK函数来创建,通知系统记录当前的状态。当出现问题时,保存点能用做内部的重启动点,根据应用逻辑,决定是回到最近一个保存点仍是其余更早的保存点。spa

链事务可视为保存点模式的一种变种。带有保存点的扁平事务,当发生系统崩溃时,全部的保存点都将消失,由于其保存点是易失的,而非持久的。这意味着当进行回复时,事务须要从开始处从新执行,而不能从最近的一个保存点继续执行。对象

链事务的思想是:在提交一个事务时,释放不须要的数据对象,将必要的处理上下文隐式地传给下一个要开始的事务。注意:提交事务操做和开始下一个事务操做将合并为一个原子操做。这意味着下一个事务将看到上一个事务的结果,就好像在一个事务中进行的同样。事务

链事务与带有保存点的扁平事务不一样的是,带有保存点的扁平事务能回滚到任意正确的保存点。而链事务中的回滚仅限于当前事务,即只能恢复到最近一个的保存点。对于锁的处理,二者页不相同。链事务在执行COMMIT后当即释放了当前事务锁持有的的锁,而带有保存点的扁平事务不影响迄今为止所持有的锁。

嵌套事务是一个层次结构框架。由一个顶层事务控制着各个层次的事务。顶层事务之下嵌套的事务被称为子事务,其控制着每个局部的变换。

分布式事务一般是在一个分布式事务下运行的扁平事务,所以须要根据数据所在位置访问网络中的不一样节点。

二、事务的实现

事务的隔离性由锁来实现。原子性、一致性、持久性经过数据库的redo log和undo log来完成。

三、事务控制语句

在MySQL默认设置下,事务都是自动提交的,即执行SQL语句后就会立刻执行COMMIT操做。所以要显示地开启一个事务需使用命令BEGIN、START TRANSACTION,或者执行命令SET AUTOCOMMIT=0,禁用当前会话的自动提交。

四、事务的隔离级别

SQL标准定义的四个隔离级别为:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ
  • SERIALIZABLE
相关文章
相关标签/搜索