【TiDB 使用环境】生产环境
【TiDB 版本】8.1.2
【操作系统】centos
【部署方式】云上部署 32c128G nvme盘
目前遇到修改表分区操作
发现速度很慢 跑了一天了 各位大佬有啥办法吗
【TiDB 使用环境】生产环境
【TiDB 版本】8.1.2
【操作系统】centos
【部署方式】云上部署 32c128G nvme盘
目前遇到修改表分区操作
表结构和执行的命令发下呢
CREATE TABLE bms_cost
(
id
bigint(20) NOT NULL
/*T![auto_rand] AUTO_RANDOM(5) */
COMMENT ‘主键ID’,
…
PRIMARY KEY (id
, tenant_code
)
/*T![clustered_index] CLUSTERED */,
UNIQUE KEY uk_tenant_code_cost_no
(tenant_code
, cost_no
),
…
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci
/*T![auto_rand_base] AUTO_RANDOM_BASE=259601562 */
COMMENT = ‘应收’
/*T![placement] PLACEMENT POLICY=primary_rule_for_region1
*/
PARTITION BY KEY (tenant_code
) PARTITIONS 25;
ALTER TABLE bms_cost ADD PARTITION PARTITIONS 24
这张表多大啊?
2个亿左右噢
你一次性增加的分区太多了,增加分区时,TiDB 需要重组分区,将现有数据重新分布到新的分区中,涉及大量数据迁移和 Region 调度,操作耗时较长,尤其是数据量大时。建议分批次(如每次增加 5-10 个分区)执行,减少单次操作压力。
TiDB 中执行添加大量分区的 DDL 操作属于阻塞式且不可中断的任务,一旦开始执行,不能主动中断或取消,你现在很尴尬了,没法中断,只能等了,如果强制中断可能导致 DDL 任务失败或元数据不一致
感谢哥 我去看看
这个尝试取消可以admin cancel ddl + 重启tidb server就没问题了
业务这边反馈 加一个分区的情况也很慢 有什么办法加加速不
看下对应表上有DDL不
可能阻塞了
同一个时间集群只有他一个ddl
怎么判断的?看下ddl_jobs视图是不是对应表有其他ddl,或者ddl正在cancelling中
收到 这个我也有设置过大一些 想再问下 在变更这个的过程中 对表的性能影响大吗
观察下机器负载,如果负载不高应该没啥影响