RDBMS架构:预写日志(Write-Ahead Logging)保证ACID性质
本文主要介绍了关系型数据库管理系统是如何设计以保证事务的原子性、一致性、隔离性以及持久性四大性质。文中的观点为写前日志(即,在任何实际写操作完成之前,先写事务日志)。
补充1:如果每次事务日志都直接写入硬盘,就会造成很大的IO消耗。那么,如果将事务日志存储于内存中,这又引发了这样一个问题——可能实际数据已经写入硬盘了,而这时候发生异常了,导致事务日志未正常写入硬盘。
针对这一问题,解决方案是这样的——为了降低IO消耗,实际数据与事务日志都可以采用内存缓存,但是必须为一一对应关系,即一定要将对应的事务日志写入硬盘之后,才开始写实际的数据,也就是后文提到的事务日志一定要先于实际数据出现在硬盘中。
补充2:那么,事务日志是如何知道某个事务的执行成功与否呢?因为日志记录中,有old value+new value。
References:
[1] 陈世敏老师的《大数据管理系统与大规模数据分析》课程讲义
©qingdujun
2018-5-1 于北京 怀柔