事务是不可分割的数据库操作序列,也是数据库并发控制的基本单位。
事务的四个特征(ACID)
原子性(Atomicity):事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。
一致性(Consistency):在一致性状态下,所有事务对同一个数据的读取结果都是相同的。
隔离性(Isolation):一个事务所做的修改在最终提交以前,对其它事务是不可见的
持久性(Durability):一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。
事务日志
InnoDB事务日志主要包括redo log和undo log。
redo log通常是物理日志,记录的是数据页的物理修改,它用来恢复提交后的物理数据页,用于实现事务的持久性。
undo log一般是逻辑日志,根据每行记录进行记录,用来回滚行记录到某个版本。
详情参考:https://blog.csdn.net/u014398524/article/details/106505549/
并发一致性问题
丢失修改指一个事务的更新操作被另外一个事务的更新操作替换。例如:T1 和 T2 两个事务都对一个数据进行修改,T1 先修改并提交生效,T2 随后修改,T2 的修改覆盖了 T1 的修改。