本文介绍了DDL语句的常见问题及解决方法。
在执行一条DDL前,如何评估它对业务的影响?
通常在分布式数据库上执行DDL,需要关注该DDL是否会锁表、是否存在数据回填步骤(这关系到DDL执行耗时多少)、是否对业务流量造成较大影响这三方面。
PolarDB-X在上述三个方面都做了大量优化,包括:
支持了OnlineDDL,使得大部分DDL的执行无需锁表。
优化了数据回填的速度,有效缩短了DDL的执行时间。
对于包括move partition、omc、rebalance在内的逻辑执行DDL均进行了异步多写优化,使得DDL数据回填过程中多写冲突和写入性能下降的持续时间极短,有效降低了这类DDL对业务流量的影响。
如需评估具体某个DDL可能对业务造成的影响,请参见Online DDL。
一些DDL耗时较长,如果Client到PolarDB-X的连接超时中断会对DDL造成什么影响?解决方法是什么?
在PolarDB-X中,默认使用同步的方式执行DDL,如果发生连接中断可能导致 DDL 执行被暂停。如果预期DDL执行时间过长,请使用异步的方式执行DDL。执行方式请参见如何异步执行DDL。
如何对正在执行的DDL进行监控和运维?尤其是异步执行的DDL。
在PolarDB-X中,提供了一些DDL控制指令,可以用于查看DDL执行情况、查看DDL历史执行结果、暂停、继续、回滚DDL等,可以有效对DDL进行控制,减少变更的风险。详情请参见DDL管理语句。
如何深入了解PolarDB-X中DDL的执行方式和原理,以便更好地运维?
简单来说PolarDB-X中的DDL的执行方式可以分为两类:
利用计算节点Online Schema Change能力执行。
下推到存储节点执行。
更详细的DDL执行方式和原理介绍请参见DDL执行方式。
我已经深入了解了PolarDB-X中DDL的执行原理,我能对DDL执行过程进行调优吗?比如加快某个DDL的执行速度。
可以,请注意,这需要建立在您已经深入了解过DDL执行原理,并对业务流量特点、PolarDB-X资源空闲情况有深入了解的基础上。
对于下推到存储节点执行的DDL,您可以调整下推至存储节点的并行度,详情请参见物理执行DDL并行控制。
对于利用计算节点Online Schema Change能力执行的DDL,耗时主要来自于数据回填。您可以调整数据回填过程的速度,详情请参见逻辑执行DDL并行控制。
还有什么我能体验到的DDL丝滑功能或优化?
无需锁表的在线修改列类型功能
使用普通方式执行修改列类型操作时,执行期间在数据节点DN上会阻塞DML,影响业务运行。PolarDB-X新增在线修改列类型(Online Modify Column,简称OMC)功能,允许以在线方式修改列类型,执行期间不会锁表。详情请参见无锁变更列类型。
秒级加字段功能
使用传统方法执行加列操作时,数据节点DN上需要重建所有物理分片数据,占用大量系统资源。PolarDB-X新增秒级加字段(Instant Add Column)功能,在加列操作时只需变更表定义信息,无需修改已有数据,帮助您快速完成对任意大小的表的加列操作。详情请参见秒级加字段。
原子性DDL优化
PolarDB-X新增多阶段DDL功能。该功能避免了用户DDL在物理执行时,出现部分分片执行成功,部分分片执行失败的情况,有效解决了物理DDL原子性问题。本优化已经默认启用,如需了解详情,详情请参见DDL原子性。