tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
配置变更
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

Online DDL

PDF
聚焦模式
字号
最后更新时间: 2026-03-06 18:48:23

概述

Online DDL(Online Data Definition Language)旨在对数据库表结构进行修改时,仍能支持并发读写操作,降低了对表的锁定时间,保障了数据库的可用性。在分布式环境中,DDL 操作需要在多个节点上同时进行,不仅需要保证 DDL & DML 操作并发的安全性,同时还要考虑性能、执行效率以及 crash-safe 问题。

工作原理

Online DDL 能力

TDSQL Boundless 已经支持大多数场景下的 Online DDL 能力,详细请参考 Online DDL 说明

使用示例

# 创建测试表
CREATE TABLE sbtest1 (id int primary key, v1 int);
# 插入测试数据
INSERT INTO sbtest1 (id, v1) values (1,1), (2,2), (3,3);
# Online 添加索引
ALTER TABLE sbtest1 ADD INDEX idx_v1(v1);
# Online 添加列
ALTER TABLE sbtest1 ADD COLUMN v2 int;

大数据量表创建索引使用建议

TDSQL Boundless 的 Fast Online DDL 能力,通过并行处理和旁路写入相结合,使得 DDL 操作变得更加高效和便捷。
但如果我们没有正确地划分大/小表,或者没有根据数据规模进行适当的分区,那么 Fast Online DDL 的执行效率可能会大打折扣。这是因为一张大表,在没有进行适当分区的情况下,数据很可能都集中在单个节点上,因此 DDL 操作也会在单个节点上进行,而不是在多个节点上并行执行,这将大大降低执行效率。
只有根据数据规模合理地使用分区表,才能充分发挥 Fast Online DDL 的分布式可扩展性能。
创建分区建议:
1. TDSQL Boundless 100% 兼容原生 MySQL 分区表语法,支持一/二级分区,主要用于解决:(1)大表的容量问题;(2)高并发访问的性能问题。
2. 大表的容量问题:如果单表大小预期未来将超过实例单节点数据盘大小,建议创建一级 hash 或 key 分区将数据均匀打散到多个节点上;如果未来数据量再增大,可通过弹性扩容的方式不断“打薄”磁盘水位。
3. 高并发访问的性能问题:高并发访问 TP 业务,如果预计单节点性能无法扛住超量读写压力的时候,也建议创建一级 hash 或 key 分区将读写压力均匀打散到多个节点上。
4. 第2、第3点中创建的分区表,建议结合业务特点选择能满足大部分核心业务查询的字段作为分区键,分区数建议为实例节点数量的倍数。
5. 如果有数据清理的需求,可创建 RANGE 分区表使用 truncate partition 命令进行快速数据清理;如果要兼顾数据打散,可进一步创建二级分区为 HASH 的分区表。

相关参数

参数名
默认值
说明
tdsql_ddl_fillback_mode
ThomasWrite
Online DDL 过程中,数据回填阶段采用的算法。
ThomasWrite:默认算法,忽略过期写入的算法。
IngestBehind:基于 bulk load 方式写入的回填算法。
max_parallel_ddl_degree
8
控制 Online DDL 数据回填阶段的最大并行度。
增加此值可加快数据回填速度,但会消耗更多的 CPU、I/O 和内存资源。可根据服务器硬件配置和业务负载进行调整。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈