数据库表分区 Range,怎么设置为根据日期字段自动分区

CREATE TABLE sales (
sale_id INT AUTO_INCREMENT,
product_id INT,
sale_date DATE,
amount DECIMAL(10, 2),
PRIMARY KEY (sale_id)
) PARTITION BY RANGE COLUMNS(sale_date) (
PARTITION p0 VALUES LESS THAN (‘2023-01-01’),
PARTITION p1 VALUES LESS THAN (‘2023-07-01’),
PARTITION p2 VALUES LESS THAN (‘2024-01-01’),
PARTITION p3 VALUES LESS THAN MAXVALUE
);

上面示例中是根据 RANGE COLUMNS(sale_date) 手动分区,如果需要根据RANGE COLUMNS(sale_date) 的 每个小时或者每天自动分区,应该怎么设置?
一个表最大分区数量是多少?

分区都是根据业务需求提前创建好的,一旦加入了MAXVALUE分区就不能在扩展了

OceanBase 数据库的 MySQL 模式中,单个表最多支持创建的分区个数为由租户级配置项 max_partition_num 控制,默认为 8192 个;

  • 在 V4.3.x 版本中,该配置项从 V4.3.1 版本开始引入。
  • 在 V4.2.x 版本中,该配置项从 V4.2.1 BP3 版本开始引入。

一般数据也不会一直存着,管理分区可以在应用程序、或者利用脚本或者定时任务周期性(提前)创建或者清理所需的分区的。

目前看官网不支持自动扩展分区

如果不通过时间清理指定分区数据的话,直接对主键进行hash或key分区是最高效(时间分区都要定期维护扩分区),对业务应用方透明,建索引都建全局索引

如果需要自动创建分区的话就需要借用ODC的自动分区功能了,并且如果你在范围分区时指定了maxvalue那就不能在扩展分区了哦

1 个赞