开发者社区 > 数据库 > 正文

为了保证事务的 持久性和原子性(DA) ,需要严格定义日志、提交点和数据页的罗盘顺序,那么有哪些策略

已解决

为了保证事务的 持久性和原子性(DA) ,需要严格定义日志、提交点和数据页的罗盘顺序,那么有哪些策略可以实现呢?

展开
收起
云上静思 2022-09-08 16:53:17 474 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    这里有force/no-force、steal/no-steal 几种策略:

    • 首先日志肯定先于数据页面落到磁盘,要求事务提交后(记录 Commit Marker),必须强制把事务所有更新的页面刷到磁盘,然后才能返回事务提交成功,这种策略称为force。如果不强制立即刷入更新页面,则可以放在后面异步进行,这种策略称为no-force。no-force 意味着可能有部分已经提交的事务所在的页面并没有落盘,这时日志必须记录重做日志(Redo Log),恢复时可以通过回放回滚保证持久性。

    • 是否允许一个含有未提交事务的数据页刷盘,如果steal 策略允许,则磁盘上就包含了未提交事务,必须在日志里面记录回滚来保证事务中止时能够回滚,no-steal 策略则不用。

    以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。

    2022-09-08 18:00:47
    赞同 展开评论 打赏

数据库领域前沿技术分享与交流

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载