总结MySQL的InnoDB引擎是如何实现事务的(如何实现acid这几个特性的)

事务的四大特性acid

  事务就是一组原子性的SQL操作或者一个独立的工作单元,事务内的语句要么全部执行成功,要么全部执行失败。
事务是指对系统进行的一组操作,为了保证系统的完整性,事务具有ACID特性,具体如下:

原子性(Atomic)

  一个事务包含多个操作,这些操作要么全部执行,要么全都不执行;
  实现事务的原子性,是基于日志的Redo/Undo机制(回滚日志);Undo log能够保证在事务回滚时,能够撤销所有已经执行成功的sql。

一致性(Consistency)

  一致性是指在事务执行前后,数据的一致性,事务前后数据完整性没有破坏,并且都是合法的数据状态。
  一致性是指事务使得系统从一个一致的状态转换到另一个一致状态。 事务的一致性决定了一个系统设计和实现的复杂度,也导致了事务的不同隔离级别。

  • 其中一致性的指标有:
      索引的完整(唯一索引,不重复等),数据列的完成(字段类型,长度,大小符合要求),外键约束等。

隔离性(Isolation)

  隔离性侧重指事务之间相互隔离,不受影响,这个与事务设置的隔离级别有密切的关系。

持久性(Durability)

  事务提交后,对系统的影响是永久的,接下来的其他操作和异常故障不应该对它有任何影响。