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

传统数据库的写放大问题是怎么回事?

已解决

传统数据库的写放大问题是怎么回事?

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

    传统数据库存在严重的写放大问题,以单机MySQL 为例,执行写操作会导致日志落盘,同时后台线程也会异步地将脏数据刷盘。另外,为了避免页断裂,进行刷脏页的过程还需要将数据页写入Double-Write 区域。如果考虑生产环境中的主备复制,如图下图 所示,AZ(Availablity Zone)1 和AZ 2 分别部署一个MySQL 实例做同步镜像复制,底层存储采用EBS(Amazon Elastic Block Store),并且每个EBS 还有自己的一份镜像,另外部署S3(Amazon Simple Storage Service)进行Redo 日志和Binlog 日志归档,以支持基于时间点的恢复。从流程上来看,每个步骤都需要传递5种类型的元数据,包括Redo、Binlog、Data-Page、Double-Write 和Frm。由于是基于镜像的同步复制,因此图中的步骤是①、③、⑤顺序执行的。这种模型的响应时间非常糟糕,因为要进行4 次网络I/O,且其中3 次是同步串行的。从存储角度来看,数据在EBS 上存了4 份,因此需要4 份都写成功才能返回。所以在这种架构下,无论是I/O 量还是串行化模型都会导致性能非常糟糕。 配图8.png

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

    2022-09-12 11:44:12
    赞同 展开评论 打赏
问答分类:
问答地址:

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

相关电子书

更多
重新出发:阿里云数据库开源整体策略 立即下载
《数据库:从趋势到实践》 立即下载
分析型数据库标准发展与行业观察 立即下载