为了保证事务的 持久性和原子性(DA) ,需要严格定义日志、提交点和数据页的罗盘顺序,那么有哪些策略可以实现呢?
这里有force/no-force、steal/no-steal 几种策略:
• 首先日志肯定先于数据页面落到磁盘,要求事务提交后(记录 Commit Marker),必须强制把事务所有更新的页面刷到磁盘,然后才能返回事务提交成功,这种策略称为force。如果不强制立即刷入更新页面,则可以放在后面异步进行,这种策略称为no-force。no-force 意味着可能有部分已经提交的事务所在的页面并没有落盘,这时日志必须记录重做日志(Redo Log),恢复时可以通过回放回滚保证持久性。
• 是否允许一个含有未提交事务的数据页刷盘,如果steal 策略允许,则磁盘上就包含了未提交事务,必须在日志里面记录回滚来保证事务中止时能够回滚,no-steal 策略则不用。
以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。