一、事务的特征
InnoDB引擎事务符合ACID原则:
• 原子性(atomicity):数据库事务是不可分割的操作单位。
• 一致性(consistency):事务将数据库从一种一致性状态变为下一种
• 隔离性(isolation):每个读写事务的对象和其它事务操作的对象能够相互分离,
• 持久性(durability):事务一旦提交,其结果就是永久性的。
二、事务的分类
• 扁平事务(Flat Transaction)
• 带有保存点的扁平事务(Flat Transaction with savepoints)
• 链事务(Chain Transaction)
• 嵌套事务(Nested Transaction)
• 分布式事务(Distributed Transaction)
扁平事务是最简单也是最常用的一种,操作是原子性的,要么执行,要么回滚。扁平事务不能提交或回滚事务的一部分。
带有保存点的扁平事务,允许事务在执行过程中,回滚到事务中较早的一个状态,
链事务,是保存点的事务的一种变种。带有保存点的事务,发生系统崩溃时,所有的保存点都会消失,因为它的保存点是易失的(volatile),而非持久的(persisten)。链事务的思想是:在提交事务时,释放不需要的数据对象,将必要的处理上下文隐式地传给下一个要开启的事务。提交事务操作和启动下一事务的操作合并为一个原子操作,这意味着下一个事务将看到上一个事务的执行结果。
链事务中的回滚只限于当前事务,并且只能回滚到最近的保存点。
嵌套事务,是一个层次结构框架,由一个顶层事务控制着各大个层次的事务,顶层事务之下嵌套的事务叫做子事务。
分布式事务,通常指在一个分布式环境下执行的扁平事务,因此需要根据数据所在的位置访问网络中不同的节点。
参考《MySQL技术内幕 -InnoDB存储引擎》整理,如侵权请联系vinin@163.com。