tidb分区表是否有自动创建分区的功能

目前我们需要按照业务时间进行数据分区,但是发现无法实现在数据库层面进行分区自动管理,需要通过自定义任务定时操作数据库,各位大佬是否有过类似的使用场景,还是说官方能够支持这个功能!!!

类似starrocks的动态分区的功能

tidb从6.3引入了此功能
https://docs.pingcap.com/zh/tidb/stable/partitioned-table#range-interval-分区

1 个赞

好的感谢,我去试一下

我看了一下range-interval是对指定范围,指定间隔,自动创建一定数量的分区,并不是每天自动按照分区字段去新增分区 :flushed:

CREATE TABLE day_report_status (
report_id int NOT NULL,
report_status varchar(20) NOT NULL,
report_date date NOT NULL
)
PARTITION BY RANGE COLUMNS (report_date)
INTERVAL (1 day) FIRST PARTITION LESS THAN (‘2000-01-01’) LAST PARTITION LESS THAN (‘2050-12-31’);
没看懂你的需求,这样不行吗?
还需要定时的将历史分区删除?

是的就是动态的管理分区,而不是预设好固定的分区

目前我们是通过程序定时任务,去执行删除历史分区,并添加后5天的分区

那我建议可以考虑下ttl功能
https://docs.pingcap.com/zh/tidb/stable/time-to-live#使用-ttl-time-to-live-定期删除过期数据


这种也是可以满足删除数据的需求,但是仍然满足不了如图自动增加分区的功能

我的意思你搭配着用,先把分区建到2050年或者2099年这样,定期删除的操作通过ttl来执行,反正未来的分区都是空的啊,难道你必须保证未来只有3个分区吗?

如果是list分区7.3版本加了个默认分区功能

1 个赞

tidb分区数量好像有上限的建不了那么多 :flushed:

目前新版上限一个表8192个分区

1 个赞

sr的链接发一下?
你要在tidb里建多少个分区?

一个建一个么。。。

我只是举个例子,你可以从2023年开始先建20年的分区,最多8192个,一天一个,20年没问题。。。等到20年之后,你再把前面的分区全删了都行。。。

2 个赞

从今天开始建,22年差不多了

了解的,就是我们的表可能会有点(几百张)所以人工去维护的话,会比较麻烦

每天都建一个