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

PolarDB架构中,DDL的一致性是如何保证的?

已解决

PolarDB架构中,DDL的一致性是如何保证的?

展开
收起
云上静思 2022-09-20 15:19:57 527 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    在InnoDB 中,DDL 操作只需要处理好节点本身的状态即可,即在做DDL 之前,需要获取对应表的MDL 锁,并清空数据字典缓存。但在共享存储架构下,系统还需要将MDL 锁同步到只读节点,避免只读节点上的请求访问到正在做DDL 的表数据;在拿到只读节点的MDL 锁之后,先应用当前 MDL 锁之前的Redo Log,并清空只读节点的数据字典缓存。在DDL 操作执行过程中,读写节点会进行文件操作,但只读节点只需要更新 自己内存中的文件系统缓存(File System Cache),因为读写节点已经将文件操作在共享存储上执行完毕。最后在DDL 执行完毕之后,读写节点还会写一个释放MDL 锁的Redo Log。当只读节点解析到这种Redo Log 时,它会释放该表的MDL 锁。此时内存中的表信息更新完毕,该表可以提供正常的访问服务。

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

    2022-09-20 16:47:30
    赞同 展开评论 打赏

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

相关产品

  • 云原生数据库 PolarDB
  • 相关电子书

    更多
    云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
    2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
    2023云栖大会:PolarDB for AI 立即下载