一、事务定义
- 通过将一组相关操作组合为一个要么全部成功要么全部失败的单元。这组操作
是一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元) - 一个完整的业务需要批量的DML(insert、update、delete)语句共同联合完成
- 事务只和DML语句有关,或者说DML语句才有事务。这个和业务逻辑有关,业务逻辑不同,DML语句的个数不同
二、事务四大特征(ACID)
-
原子性(Atomicity):
对于事务中数据的DML操作要么全成功,要么全部失败回滚。 -
一致性(Consistent):
在事务开始和完成时,数据都必须保持一致状态。在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构都必须是正确的。 -
隔离性(Isolation)
一个事务所做的修改在最终提交以前,对其他事务是不可见的。 -
持久性(Durable)
事务一旦被提交,其结果就是永久性的。是事务的保证,事务终结的标志(内存的数据持久到硬盘文件中)
三、事务操作
- 开启事务:begin(或 start transaction 显式地开启一个事务)
- 提交事务: commit
- 事务回滚:rollback
四、事务的实现(事务日志)
-
undo log(回滚日志)
执行过程中发生异常,错误,手动回滚,执行undo log 回滚日志。
事务提交之后,mysql不会执行事务回滚日志 -
redo log(重做日志)