PolarDB-X DDL 执行详解
本文分享 PolarDB-X 中数据定义语言 (DDL) 语句的执行方式,涵盖 DDL 操作的执行流水线、校验机制、JOB创建和管理。
DDL执行架构
PolarDB-X 中的 DDL 执行遵循多阶段流程,包括验证、作业创建和异步执行。优先考虑可靠性、一致性以及与系统分布式特性的集成。

DDL 上下文
DdlContext
类充当所有与 DDL 相关的运行时数据和状态信息的容器。它在 DDL 执行开始时创建,并在整个生命周期内跟踪操作。
DdlContext
的主要属性:

Job 标识 ( jobId
,parentJobId
,parentTaskId
)Operation metadata ( ddlType
,schemaName
,objectName
)Execution state and flags ( state
,asyncMode
,forRollback
)SQL statements ( ddlStmt
,cdcRewriteDdlStmt
,foreignKeyOriginalSql
)
DDL执行管道
DDL 执行管道将 DDL 语句转换为跨分布式数据节点的物理更改。该过程在即时一致性要求与可能长时间运行的操作之间取得平衡。

执行步骤
1、初始化 DDL 上下文:
使用operation元数据创建 DdlContext设置跟踪 ID、schema和对象名称 捕获 SQL 模式和连接串变量 如果需要,重写用于 CDC 的原始 SQL
2、计划验证:
验证表引擎兼容性 执行特定操作的验证 验证约束和依赖关系
3、物理映射:
确定数据库索引和物理表名称 处理分区表与标准表的不同之处
4、创造JOB:
根据操作类型构建专门的 DDL 作业 为每个所需操作创建任务 设置任务之间的依赖关系
5、任务校验:
验证任务名称和依赖关系 检查作业的完整性和正确性
6、执行:
提交作业给DDL引擎执行 作为常规或子作业执行
7、结果生成:
根据操作构建合适的游标 返回异步操作的作业 ID 返回 EXPLAIN 操作的执行计划
验证机制
PolarDB-X 采用各种验证器来确保 DDL 操作保持数据完整性并遵守系统约束。
外键验证
外键验证是一种专门的验证过程,应用于涉及外键约束的 CREATE TABLE
和 ALTER TABLE
操作。
外键的键验证规则:

对于具有外键的表,存储引擎必须是 InnoDB 外键约束名称必须唯一 引用的列必须存在于引用表中 引用的列必须具有覆盖外键的索引 引用列和被引用列之间的数据类型必须兼容 字符集和排序规则必须匹配 生成列不能用于外键 SET NULL 选项需要 nullable 的外键列
DDL 操作的 CDC 集成
DDL 操作被标记, 可被变更数据捕获 (CDC)模块使用,以确保DDL正确复制到下游系统。

为CDC集成的功能:
重写 DDL 语句以给匿名索引分配名称 保留原始 SQL 语句以进行 CDC 复制 外键语句的特殊处理 包含server变量和 SQL mode 支持具有唯一 ID 的 DDL 版本控制
DDL 类型和处理程序
PolarDB-X 支持各种类型的 DDL 操作,每种操作都有自己的专用处理程序来扩展通用框架。
所有处理程序都遵循LogicalCommonDdlHandler
定义的通用结构,但实现专门的逻辑:
根据操作类型创建特定JOB 特定操作的验证逻辑 根据操作需求生成结果游标
异步执行模型
PolarDB-X 默认对 DDL 操作使用异步执行模型,允许长时间运行的操作进行而不会阻塞客户端连接。

异步执行模型的关键信息:
异步模式返回JOB ID,用于稍后的状态检查 同步模式等待完成后再返回客户端 子JOB允许分解复杂的操作 状态跟踪允许监控和恢复
错误处理和恢复
DDL操作可能由于各种原因失败。PolarDB-X 包含错误处理和恢复机制:
验证错误:在创建作业之前发现,并立即报告给客户 执行错误:在作业状态中跟踪,可以触发回滚 连接被重置:检测并处理,允许作业完成 中断的JOB:可以暂停、恢复或回滚 临时JOB:适用于不需要恢复的操作
当 DDL 操作在执行过程中失败时:
错误状态记录在JOB中 回滚任务可能会自动触发 JOB状态可供查询 错误信息被保存用于诊断
执行 CREATE TABLE
CREATE TABLE操作是PolarDB-X支持的最复杂的DDL操作之一。

CREATE TABLE 执行的关键方面:
列定义和约束处理 使用自动命名匿名索引创建索引 外键验证和处理 存储引擎、字符集和排序规则处理 分区信息处理 table group 关联 用于复制的 CDC 集成
总结
PolarDB-X 中的 DDL 执行系统提供了一个强大的框架,用于处理分布式数据库环境中的 schema 更改。它提供:
所有 DDL 操作的一致验证和执行管道 与 CDC 集成以复制 schema 更改 长时间运行操作的异步执行 状态跟踪和恢复机制 针对不同类型 DDL 操作的专用处理程序
这种架构使 PolarDB-X 能够保持数据一致性,同时允许灵活的管理跨分布式表 schema 。
欢迎关注PolarDB公众号.
如需“商务咨询“或”开源交流“, 速加小编微信.





