首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库运维人员看过来!高效且透明的 DDL,OceanBase顺利实现!

DDL操作是数据库运维当中避免不了的日常工作,也是影响比较大的操作。为了减少风险,一些开源社区提供了gh-ost、pt-online-schema-change这样便利的工具,以便解决一些堵塞问题,但仍然还是存在很多不确定的因素。

比如当数据量较大的表需要表更时,创建触发器过程中binlog同步发生了延迟,导致DDL无法完成,此外在执行过程中,内存占满、CPU 100% 、IO等待最终都会导致阻塞读写请求(DML操作阻塞),影响系统的可用性。

对此,OceanBase 认为,上述问题的完美解决取决于实现高效且透明的 DDL,即数据库应该尽可能快地执行 DDL,并保证 DDL 执行期间不影响业务方和运维人员的操作。那么,更适合用户实际业务需求的 DDL是怎样的?OceanBase如何实现高效且透明的 DDL?效果如何呢?今天就来和大家聊一聊。

高效且透明的 DDL,OceanBase如何实现?

如今,仅靠传统意义上的 Online DDL 已无法很好地满足实际业务需求。OceanBase认为,更适合用户实际业务需求的 DDL 至少要具备以下两方面能力:一方面,DDL 的执行应避免对业务方的 DML、DQL 操作产生影响,分布式环境也不会被运维人员感知,即便发生宕机等异常,DDL 操作也能成功;另一方面,DDL 操作应具备在单机和分布式上良好的并行处理能力,帮助用户进行快速的业务创新。

在 OceanBase 早期的版本中,由于架构设计上的限制,对数据库 Online DDL 能力进行了有限支持,例如不支持主键修改操作给业务使用带来了诸多不便。但得益于4.0新版本一体化的架构设计,OceanBase 针对 Online DDL 操作进行了增强支持。

在透明性方面,OceanBase 采用的是“业务请求优先”设计思路,能避免对业务请求产生影响。此外,我们也尽量屏蔽用户对分布式数据库的感知,让用户像使用单机数据库一样,在分布式数据库中执行 DDL。OceanBase 4.0 基于新的并行执行框架,重新设计了 DDL 数据补全的分布式执行计划,该计划分为两部分,第一部分是采样和扫描算子,第二部分是排序和扫描算子。

在执行效率方面,考虑到部分 DDL 操作会对数据进行补全,而该步骤往往是 DDL 操作中最耗时的,OceanBase没有使用其他分布式数据库常用的模拟插入方式,而是借鉴了单机数据库的设计思路,并在分布式数据库中做到数据补全的性能可扩展,实现足够高效的 DDL。4.0 能为用户提供原生的数据重整 DDL 变更功能,一条 DDL 命令即可完成所有操作,包括修改分区规则、主键操作、修改列类型、修改字符集等,用户无须关心 DDL 变更过程中出现的环境异常。

4.0 DDL新功能效果如何?

OceanBase 4.0 支持了常见的数据重整的 DDL 功能,包括修改主键、修改列类型、修改分区规则、修改字符集等。通过原子变更、更全面的数据一致性校验和高可用的数据同步技术,让用户只需要执行一条语句就能完成所需要的变更操作,无须考虑分布式环境中出现的异常场景,减少业务对分布式环境的感知,使用上更加透明。同时,还提升了 DDL 的单机和分布式并行能力,加快 DDL 中数据补全的速度,使得 DDL 执行更加高效。

经过一系列测试后,结果显示,OceanBase 索引构建性能,相对于数据库 A,提升了 10-20 倍,相对于 MySQL,提升了 3-4 倍。因此,使用排序和旁路写入方式来补全数据,能大幅提升索引构建性能。OceanBase 4.0 经过单机性能优化,数据补全的速度明显快于 MySQL。

综上所述,本篇文章讨论了 OceanBase 如何实现高效且透明的 DDL,介绍了 OceanBase 4.0 DDL 的新能力及测试效果,希望透过这些新变化,能帮助运维人员和数据库厂商轻松应对各类复杂业务场景。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230216A08NHK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券