揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL( 三 )


对于InnoDB引擎而言 , DD数据字典操作 , InnoDB引擎数据字典操作都是通过InnoDB引擎存储 , 通过InnoDB事务特征来保证原子性 。 对于X-Engine引擎而言 , DD数据字典操作 , X-Engine引擎数据字典操作分别采用InnoDB引擎和X-Engine引擎 , 除了依赖于InnoDB和X-Engine自身是事务引擎特征 , 还需要借助于内部的2PC协议来保证整个事务的原子性 。 如果MySQL开启了binlog , 那么就是binlog , X-Engine , InnoDB三者一起通过2PC协议保证事务的原子性 。 而Post-ddl阶段就是做善后和清理工作 , 如果最终整个事务提交 , Post-ddl阶段负责真正清理old-table数据;如果最终整个事务回滚 , 那么Post-ddl阶段负责清理临时产生的new-table数据 , 确保DDL变更前后 , 数据库的状态是一致的 。

揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
本文插图
使用体验
X-Engine作为MySQL的一个新引擎 , 在语法使用层面完全与MySQL(InnoDB)相同 , 通过algorithm_option指定Online类型 , 通过lock_option指定DDL过程中 , 是否允许其它并发的DML和SELECT操作 。 通常情况下 , 这两个选项都不用特别指定 , 采用默认值即可 , MySQL内部会优先选择Instant类型和Inplace类型 , 对于不支持Online的DDL操作 , 选择Copy类型 。 在功能层面也与MySQL(InnoDB)相同 , 目前X-Engine暂时还不支持全文索引 , 虚拟列 , 外键等功能 , 因此与这些功能相关的DDL操作会不支持 , 其它DDL操作与MySQL(InnoDB)相同 。 常用的DDL操作分类如下:
揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL
本文插图
后续工作
【揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL】X-Engine作为一个新的数据库存储引擎 , 通过集团业务场景的打磨 , 已经体现了它的价值 , 我们希望通过云上RDS场景 , 让更多用户享受到新技术带来的红利 。 当然 , 目前X-Engine还有一些不足 , 尤其是相对于传统成熟的MySQL(InnoDB)和Oracle , 所以X-Engine引擎在优化自身的稳定性和性能同时 , 会持续不断地丰富数据库功能 , 包括支持外键 , 全文索引 , 虚拟列等 。 除了公有云的RDS输出 , 基于X-Engine的一体化分布式数据库PolarDB-X也是一个重要方向 , 我们会以专有云形式输出 , 服务更多对分布式数据库有强需求的用户 。