首页 > 数据库 > 数据库开发技术 > 【数据库设计与实现】第三章:数据后像与前滚
3.1设计原则
事务的持久性要求事务提交时本次事务的修改必须完成持久化工作,而事务修改的block或page在大部分场景下并不是连续的,在持久化设备上表现为大量的随机IO。通过记录后像,可以将随机IO转换为对持久化设备更为有利的顺序IO,并将dirty block或dirty page(指被修改过但尚未完成持久化的block或page)的多次修改合并,节约block或page的持久化次数。
后像是平衡性能和事务持久性的最有效手段,因此Oracle和MySQL都采用了后像方案,并将其称为redo log。在设计后像时,需要考虑如下几点:
后像是一个顺序日志流,高并发时会有大量的事务争用日志写入资源,如何降低高并发下的资源冲突;
后像的效率如何,数据库异常重启后前滚的效率如何;
后像文件的组织方式是否能在性能和可靠性之间找到好的平衡点;
后像的设计是否有利于PITR、数据复制能延伸功能的高效实现;
3.2 MySQL设计原理
3.2.1 物理日志与逻辑日志
3.2.2 LSN与检查点
3.2.3 Mini Transaction
3.2.4 Double Write
3.2.5 Redo Log格式与文件组织
3.2.6 日志持久化
3.2.7 重做日志恢复
3.3 Oracle设计原理
3.3.1 物理日志与逻辑日志
3.3.2 SCN与检查点
3.3.3 Fractured Block
3.3.4 Redo Log格式与文件组织
3.3.5 日志持久化
3.3.6 PVRS与IMU
3.3.7 重做日志恢复
3.4 总结与分析
附件:博客布局不利于展示表格等内容,本章节详细内容见附件。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912723/viewspace-2717312/ ,如需转载,请注明出处,否则将追究法律责任。