开发者社区 问答 正文

OceanBase社区版4.1做ONLINE DDL加减列 加索引 对业务读写是没有阻塞的吗?

OceanBase社区版4.1做ONLINE DDL加减列 加索引 对业务读写是没有阻塞的吗? 为了支持业务的快速发展,用户不可避免地要做加列、减列、建索引等诸多 DDL 变更。这些 DDL 变更对于数据库来说通长是很昂贵的操作。MySQL 在很长一段时间内都不能支持在线的 DDL 变更(直到 5.6 版本才开始对 Online DDL 有比较好的支持),而即使到今天,对于 DBA 来说,在 MySQL 5.7 中做 Online DDL 仍然是一件比较有风险的操作,因为一个大的 DDL 变更就会导致 MySQL 主备间的 replication lag。

OceanBase 数据库在设计之初就考虑到了 Online DDL 的需求,目前在 OceanBase 数据库中加列、减列、建索引等 DDL 操作都是不阻塞读写的,也不会影响到多副本间的 paxos 同步。加减列的 DDL 变更是实时生效的,将对存储数据的变更延后到每日合并的时候来做。然而对于某些 DDL 操作如加减列等,是需要将所有数据重写一遍的,如果在一次每日合并过程中完成对所有数据的重写,那么对存储空间和合并时间都会是一个比较大的考验。为了解决这个问题,OceanBase 数据库引入了渐进合并,将 DDL 变更造成的数据重写分散到多次每日合并中去做,假设渐进轮次设置为 60,那么一次合并就只会重写 60 分之一的数据,在 60 轮合并过后,数据就被整体重写了一遍。渐进合并减轻了 DBA 做 DDL 操作的负担,同时也使得 DDL 变更更加平滑。

展开
收起
真的很搞笑 2023-06-11 19:20:50 119 分享 版权
来自: OceanBase
1 条回答
写回答
取消 提交回答
  • 是的 当前有遇到相关问题吗 。,此回答整理自钉群“[社区]技术答疑群OceanBase”

    2023-06-11 19:52:29
    赞同 展开评论