Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
在经典的数据库理论里,本地事务具备四大特征:
- 原子性
事务中的所有操作都是以原子的方式执行的,要么全部成功,要么全部失败;
- 一致性
事务执行前后,所有的数据都应该处于一致性状态—即要满足数据库表的一致性约束,也要达到业务一致性(完成了业务目标);
- 隔离性
并发执行的事务不应该相互干扰;隔离性的强度由隔离级别决定;
- 持久性
事务一旦被提交,它添加/修改的数据不会随着系统崩溃而丢失;
在MySQL(InnoDB引擎)中,原子性和持久性是通过Redo Log来实现的,一致性是通过Undo Log实现的,而隔离性则是通过锁和MVCC来实现的。
ARIES算法
如果需要深入了解数据库本地事务原理,不得不提到ARIES算法,该算法全称为Algorithms for Recovery and Isolation Exploiting Semantics(基于语义的恢复与隔离算法),众多主流的关系型数据库都受到该算法的影响。
ARIES算法主要针对使用No Force + Steal的数据写入策略而采用的一种数据恢复方式。
该算法主要基于三个主要的原则:
- Write-ahead logging
出于性能上的考虑,数据的修改都是在内存中进行,并将这些“修改操作”记录到日志(Redo Log和Undo Log)中,然后异步将内存中的数据写入到磁盘;
- 通过Redo Log恢复数据
Redo Log用于记录事务对数据的修改操作,在数据库崩溃恢复时,ARIES通过Redo Log重放那些还未写入到数据库磁盘中的数据操作,将数据恢复至崩溃前的状态;
- 通过Undo Log回滚数据