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

为了减少网络I/O,在Aurora 中是怎么做的?

已解决

为了减少网络I/O,在Aurora 中是怎么做的?

展开
收起
云上静思 2022-09-12 11:02:14 336 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    为了减少网络I/O,在Aurora 中,所有的写类型只有一种,就是Redo 日志,任何时候都不会写数据页。存储节点接收Redo 日志,基于旧版本数据页回放日志,可以得到新版本的数据页。为了避免每次都从头开始回放数据页变更产生的Redo 日志,存储节点会定期物化数据页版本。如下图所示,Aurora 由跨AZ 的一个主实例和多个副本实例组成,主实例与副本实例或存储节点间只传递Redo 日志和元信息。主实例并发向6 个存储节点和副本实例发送日志,当4/6 的存储节点应答后,则认为日志已经持久化,对于副本实例,则不依赖其应答时间点。从Sysbench 测试(100GB 规模、只写场景、压力测试30 分钟)的数据来看,Aurora 是基于镜像的MySQL 吞吐能力的35 倍,每个事务的日志量比基于镜像的MySQL 的日志量要少0.12%左右。在故障恢复速度方面,传统数据库宕机重启后,从最近的一个检查点开始恢复,读取检查点后的所有Redo 日志并进行回放,确保已经提交的事务对应的数据页得到更新。在Aurora 中,Redo 日志相关的功能下推到存储层,回放日志的工作可以一直在后台做。对于任何一次磁盘I/O 读操作,如果数据页不是最新版本,都会触发存储节点回放日志,得到新版本的数据页。因此类似于传统数据库的故障恢复操作实质在后台不断地进行,而真正进行故障恢复时,需要做的事情很少,所以故障恢复的速度非常快。 配图9.png

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

    2022-09-12 11:44:45
    赞同 展开评论 打赏
问答标签:
问答地址:

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

相关电子书

更多
可编程网络视角的网络创新研究 立即下载
可编程网络和SDN3.0 立即下载
开放促进创新:构建开放网络生态 立即下载