分区表添加分区很慢

【 TiDB 使用环境】生产环境 or 测试环境 or POC
生产环境
【 TiDB 版本】
v5.4.1
【遇到的问题】
给分区表添加新的分区很慢
【复现路径】做过哪些操作出现的问题
使用了DM同步数据,但是task已经stop了
【问题现象及影响】
CREATE TABLE t_auth_record (
id bigint(20) NOT NULL AUTO_INCREMENT,
uuid varchar(50) NOT NULL COMMENT ‘会话ID’,
uhid varchar(50) DEFAULT NULL,
dhid varchar(50) DEFAULT NULL,
ssid varchar(50) NOT NULL COMMENT ‘ssid’,
bssid varchar(32) NOT NULL COMMENT ‘Bossed’,
mac varchar(32) NOT NULL COMMENT ‘终端mac’,
mobile varchar(500) DEFAULT NULL,
device_system varchar(32) NOT NULL COMMENT ‘终端类型 Android、ios等’,
wifikey_appid varchar(32) DEFAULT NULL COMMENT ‘钥匙appid’,
auth_time datetime NOT NULL,
auth_resp_code int(11) NOT NULL COMMENT ‘认证结果 1-认证成功 2-认证失败’,
auth_resp_msg varchar(200) DEFAULT NULL COMMENT ‘合作商返回描述’,
vendor_id int(11) NOT NULL COMMENT ‘合作商id’,
portal_vendor varchar(32) NOT NULL COMMENT ‘合作商类型’,
portal_type int(11) DEFAULT NULL COMMENT 'portal流程类型 ',
auth_type tinyint(2) DEFAULT NULL COMMENT ‘1-钥匙认证 2-短信认证’,
event_type int(11) DEFAULT NULL COMMENT ‘事件类型,例如21’,
create_time datetime NOT NULL COMMENT ‘记录创建时间’,
update_time datetime NOT NULL COMMENT ‘记录更新时间’,
PRIMARY KEY (id,create_time) /*T![clustered_index] NONCLUSTERED */,
KEY index2 (mac,device_system,wifikey_appid,auth_resp_code,vendor_id,portal_vendor,portal_type,event_type,auth_time),
KEY idx_create_time (create_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=370226368
PARTITION BY RANGE COLUMNS(create_time)
(PARTITION P20200920 VALUES LESS THAN (“2020-09-20”),
PARTITION P20200921 VALUES LESS THAN (“2020-09-21”),
PARTITION P20200922 VALUES LESS THAN (“2020-09-22”),
PARTITION P20200923 VALUES LESS THAN (“2020-09-23”),
PARTITION P20200924 VALUES LESS THAN (“2020-09-24”),
PARTITION P20200925 VALUES LESS THAN (“2020-09-25”),
PARTITION P20200926 VALUES LESS THAN (“2020-09-26”),
PARTITION P20200927 VALUES LESS THAN (“2020-09-27”),
PARTITION P20200928 VALUES LESS THAN (“2020-09-28”),
PARTITION P20200929 VALUES LESS THAN (“2020-09-29”),
PARTITION P20200930 VALUES LESS THAN (“2020-09-30”),
PARTITION P20201001 VALUES LESS THAN (“2020-10-01”),
PARTITION P20201002 VALUES LESS THAN (“2020-10-02”),
PARTITION P20201003 VALUES LESS THAN (“2020-10-03”),
PARTITION P20201004 VALUES LESS THAN (“2020-10-04”),
PARTITION P20201005 VALUES LESS THAN (“2020-10-05”),
PARTITION P20201006 VALUES LESS THAN (“2020-10-06”),
PARTITION P20201007 VALUES LESS THAN (“2020-10-07”),
PARTITION P20201008 VALUES LESS THAN (“2020-10-08”),
PARTITION P20201009 VALUES LESS THAN (“2020-10-09”),
PARTITION P20201010 VALUES LESS THAN (“2020-10-10”),
PARTITION P20201011 VALUES LESS THAN (“2020-10-11”),
PARTITION P20201012 VALUES LESS THAN (“2020-10-12”),
PARTITION P20201013 VALUES LESS THAN (“2020-10-13”),
PARTITION P20201014 VALUES LESS THAN (“2020-10-14”),
PARTITION P20201015 VALUES LESS THAN (“2020-10-15”),
PARTITION P20201016 VALUES LESS THAN (“2020-10-16”),
PARTITION P20201017 VALUES LESS THAN (“2020-10-17”),
PARTITION P20201018 VALUES LESS THAN (“2020-10-18”),
PARTITION P20201019 VALUES LESS THAN (“2020-10-19”),
PARTITION P20201020 VALUES LESS THAN (“2020-10-20”),
PARTITION P20201021 VALUES LESS THAN (“2020-10-21”),
PARTITION P20201022 VALUES LESS THAN (“2020-10-22”),
PARTITION P20201023 VALUES LESS THAN (“2020-10-23”),
PARTITION P20201024 VALUES LESS THAN (“2020-10-24”),
PARTITION P20201025 VALUES LESS THAN (“2020-10-25”),
PARTITION P20220325 VALUES LESS THAN (“2022-03-25”),
PARTITION P20220326 VALUES LESS THAN (“2022-03-26”),
PARTITION P20220327 VALUES LESS THAN (“2022-03-27”),
PARTITION P20220328 VALUES LESS THAN (“2022-03-28”),
PARTITION P20220329 VALUES LESS THAN (“2022-03-29”),
PARTITION P20220330 VALUES LESS THAN (“2022-03-30”),
PARTITION P20220331 VALUES LESS THAN (“2022-03-31”),
PARTITION P20220401 VALUES LESS THAN (“2022-04-01”),
PARTITION P20220402 VALUES LESS THAN (“2022-04-02”),
PARTITION P20220403 VALUES LESS THAN (“2022-04-03”),
PARTITION P20220404 VALUES LESS THAN (“2022-04-04”),
PARTITION P20220405 VALUES LESS THAN (“2022-04-05”),
PARTITION P20220406 VALUES LESS THAN (“2022-04-06”),
PARTITION P20220407 VALUES LESS THAN (“2022-04-07”),
PARTITION P20220408 VALUES LESS THAN (“2022-04-08”),
PARTITION P20220409 VALUES LESS THAN (“2022-04-09”),
PARTITION P20220410 VALUES LESS THAN (“2022-04-10”),
PARTITION P20220411 VALUES LESS THAN (“2022-04-11”),
PARTITION P20220412 VALUES LESS THAN (“2022-04-12”),
PARTITION P20220413 VALUES LESS THAN (“2022-04-13”),
PARTITION P20220414 VALUES LESS THAN (“2022-04-14”),
PARTITION P20220415 VALUES LESS THAN (“2022-04-15”),
PARTITION P20220416 VALUES LESS THAN (“2022-04-16”),
PARTITION P20220417 VALUES LESS THAN (“2022-04-17”),
PARTITION P20220418 VALUES LESS THAN (“2022-04-18”),
PARTITION P20220419 VALUES LESS THAN (“2022-04-19”),
PARTITION P20220420 VALUES LESS THAN (“2022-04-20”),
PARTITION P20220421 VALUES LESS THAN (“2022-04-21”),
PARTITION P20220422 VALUES LESS THAN (“2022-04-22”),
PARTITION P20220423 VALUES LESS THAN (“2022-04-23”),
PARTITION P20220424 VALUES LESS THAN (“2022-04-24”),
PARTITION P20220425 VALUES LESS THAN (“2022-04-25”),
PARTITION P20220426 VALUES LESS THAN (“2022-04-26”),
PARTITION P20220427 VALUES LESS THAN (“2022-04-27”),
PARTITION P20220428 VALUES LESS THAN (“2022-04-28”),
PARTITION P20220429 VALUES LESS THAN (“2022-04-29”),
PARTITION P20220430 VALUES LESS THAN (“2022-04-30”),
PARTITION P20220501 VALUES LESS THAN (“2022-05-01”),
PARTITION P20220502 VALUES LESS THAN (“2022-05-02”),
PARTITION P20220503 VALUES LESS THAN (“2022-05-03”),
PARTITION P20220504 VALUES LESS THAN (“2022-05-04”),
PARTITION P20220505 VALUES LESS THAN (“2022-05-05”),
PARTITION P20220506 VALUES LESS THAN (“2022-05-06”),
PARTITION P20220507 VALUES LESS THAN (“2022-05-07”),
PARTITION P20220508 VALUES LESS THAN (“2022-05-08”),
PARTITION P20220509 VALUES LESS THAN (“2022-05-09”),
PARTITION P20220510 VALUES LESS THAN (“2022-05-10”)) |


【附件】

请提供各个组件的 version 信息,如 cdc/tikv,可通过执行 cdc version/tikv-server --version 获取。

找到原因了,是因为这个表开启了tiflash副本,ddl操作会等,
mysql> ALTER TABLE t_auth_record ADD PARTITION (PARTITION P20220513 VALUES LESS THAN (“2022-05-13”));
ERROR 1105 (HY000): DDL job rollback, error msg: [ddl] add partition wait for tiflash replica to complete
我把iflash副本取消就很快了
但是实际上新建分区也不会有数据,不知道这个内部在做什么操作,建议官方调整该部分的逻辑

1 个赞

底层逻辑,是split region。
一个分区至少一个region。 split region 然后是连带的反应。

逻辑是没错,但是是否可以优化,比如先建好分区,后续再一起分裂什么的。。。不然这个真是痛苦

ddl上锁了吧。