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 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

DDL 操作指引

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:46:27

操作前检查

1. 确认是否有足够的空间进行 DDL 操作。
查看进行 DDL 操作的表当前占用的空间,并通过当前实例的磁盘使用率判断是否有足够的空间进行 DDL 操作。
SELECT
table_name AS '表名',
ROUND((data_length + index_length) / 1024 / 1024, 2) AS '总空间(MB)',
ROUND(data_length / 1024 / 1024, 2) AS '数据空间(MB)',
ROUND(index_length / 1024 / 1024, 2) AS '索引空间(MB)',
ROUND(data_free / 1024 / 1024, 2) AS '碎片空间(MB)'
FROM information_schema.TABLES
WHERE table_schema = '数据库名'
AND table_name = '表名';
说明:
部分 DDL 可以使用 instant DDL,不涉及空间占用,详细请参见 OnlineDDL 说明
2. 查看同名表是否有超长数据的慢查询。
SELECT * FROM information_schema.processlist WHERE INFO LIKE "%表名%" ORDER BY TIME_MS DESC LIMIT 10;
若有,则等慢查询结束后再执行 DDL。
3. 针对大单表,查看数据分布,确认 IO 压力。
SELECT
SUM(region_stats_approximate_size) AS size,
COUNT(b.rep_group_id) AS region_nums,
sql_addr,
c.leader_node_name,
b.rep_group_id
FROM
information_schema.META_CLUSTER_DATA_OBJECTS a
JOIN information_schema.META_CLUSTER_REGIONS b
JOIN information_schema.META_CLUSTER_RGS c
JOIN information_schema.META_CLUSTER_NODES d
ON a.data_obj_id = b.data_obj_id
AND b.rep_group_id = c.rep_group_id
AND c.leader_node_name = d.node_name
WHERE
a.schema_name = '数据库名'
AND a.table_name = '表名'
GROUP BY
rep_group_id
ORDER BY
leader_node_name;
如果数据全部倾斜在某一个节点,建议将 max_parallel_ddl_degree 从默认8设置为4或者2,减少 DDL 并发线程以降低 IO 压力。
4. 通过租户端监控指标确认 CPU/IO 负载。
建议在业务低峰期进行 DDL 操作。

操作中查看进度

-- 查看DDL,是否在执行,LAST_TIMESTAMP 若在更新,则表明 DDL 在执行,如果长时间没有更新,则可能 hang 住
SELECT * FROM information_schema.ddl_jobs WHERE is_history = 0;

-- 查看进度则关注 information_Schema.ddl_jobs INFO 字段中的"progress"信息
ID: 13
SCHEMA_NAME: tdstore
TABLE_NAME: sbtest1
VERSION: 13
DDL_STATUS: SUCCESS
START_TIMESTAMP: 2025-08-08 14:29:35
LAST_TIMESTAMP: 2025-08-08 14:29:35
DDL_SQL: alter table tdstore.sbtest1 add index idx(v)
INFO_TYPE: ALTER TABLE
INFO: {"tmp_tbl":{"db":"tdstore","table":"#sql-d_1000be_6895994e0000ad_1"},"alt_type":1,"alt_tid_upd":{"tid_from":10039,"tid_to":10039},"cr_idx":[{"id":10040,"ver":4,"stat":0,"tbl_type":1,"idx_type":2}],"rm_idx":[],"init":false,"tmp_tab":false,"online_op":true,"wf_rmed":false,"online_copy_stage":0,"idx_op":true,"row_applied":true,"row_apply_saved":true,"current_schema_name":"tdstore","crt_data_obj_task_id":29437883249066288,"dstr_data_obj_task_id":0,"alt_tbl_pp_stage":0,"alt_tbl_policy_option":0,"data_obj_to_be_dstr_arr":[],"progress":"total: 1, scanned: 1 (100.00%)","fillback_mode":"ThomasWrite","exec_addr":{"ip":"10.10.10.10","port":15035},"recov_addr":{"ip":"10.10.10.10","port":15035}}
IS_HISTORY: 1

--通过租户端观察 CPU/IO 负载以及慢查询告警;
INFO 字段中的 progress 即是进度说明: "progress":"total: 1, scanned: 1 (100.00%)"

查看任务结果

--返回empty, 则表明 DDL job 执行结束
SELECT * FROM information_schema.ddl_jobs WHERE is_history = 0;

帮助和支持

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

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

文档反馈