《MySQL是怎样运行的 —— 从跟上理解MySQL》—— 第十八章
一、事务的概念
事务
是一个抽象的概念,它其实对应着一个或多个数据库操作。将需要保证原子性
、隔离性
、一致性
和持久性
的一个或多个数据库操作称之为一个事务
。
事务的状态:
- 活动的(active):事务对应的数据库操作正在执行过程中时,该事务处在
活动的
状态。 - 部分提交的(partially
committed):当事务中的最后一个操作执行完成,但由于操作都在内存中执行,所造成的影响并没有刷新到磁盘时,该事务处在
部分提交的
状态。 - 失败的(failed):当事务处在
活动的
或者部分提交的
状态时,可能遇到了某些错误(数据库自身的错误、操作系统错误或者直接断电等)而无法继续执行,或者人为的停止当前事务的执行,该事务处在失败的
状态。 - 中止的(aborted):事务执行了半截而变为
失败的
状态。这个过程需要执行回滚操作,当回滚
操作执行完毕时,也就是数据库恢复到了执行事务之前的状态,该事务处在了中止的
状态。 - 提交的(committed)当一个处在
部分提交的
状态的事务将修改过的数据都同步到磁盘上之后,该事务处在了提交的
状态。
只有当事务处于提交的或者中止的状态时,一个事务的生命周期才算是结束了。对于已经提交的事务来说,该事务对数据库所做的修改将永久生效,对于处于中止状态的事务,该事务对数据库所做的所有修改都会被回滚到没执行该事务之前的状态。
数据库某些操作的原子性和隔离性都是保证一致性的一种手段,在操作执行完成后保证符合所有既定的约束则是一种结果。数据的一致性才是最终结果。
MySQL中事务的语法
详情见书,或者:
- https://dev.mysql.com/doc/refman/8.0/en/commit.html
- https://www.runoob.com/mysql/mysql-transaction.html