本文介绍了TTL表相关的ALTER TABLE语法。
变更TTL表的定时任务
ALTER TABLE tbl_name
local_partition_alter_options
local_partition_alter_options:
ALLOCATE LOCAL PARTITION
| EXPIRE LOCAL PARTITION [local_partition_name]
| REMOVE LOCAL PARTITIONING
| local_partition_definition
local_partition_definition:
LOCAL PARTITION BY RANGE (column_name)
[STARTWITH 'yyyy-MM-dd']
INTERVAL interval_count MONTH
[EXPIRE AFTER expire_after_count]
[PRE ALLOCATE pre_allocate_count]
[PIVOTDATE pivotdate_func]
[DISABLE SCHEDULE]
pivotdate_func:
NOW()
| DATE_ADD(...)
| DATE_SUB(...)
创建新的物理时间分区
此命令多次调用不会无限制创建新分区,只会创建预定时间内的新分区。
ALTER TABLE t_order ALLOCATE LOCAL PARTITION;
删除过期的物理时间分区
此命令多次调用不会无限制删除已有分区,只会删除过期分区。
- 可以指定物理时间分区名,可通过information_schema.local_partitions获取
ALTER TABLE t_order EXPIRE LOCAL PARTITION p20210401;
- 不指定分区名时,删除所有已过期的分区
ALTER TABLE t_order EXPIRE LOCAL PARTITION;
说明 未失效分区不允许删除,会报错。
TTL表转换成普通表
ALTER TABLE t_order REMOVE LOCAL PARTITIONING;
说明 TTL表转换成普通表需要进行数据搬迁,请在业务低峰期进行操作。
普通表转换成TTL表
ALTER TABLE t_order
LOCAL PARTITION BY RANGE (gmt_modified)
STARTWITH '2021-01-01'
INTERVAL 1 MONTH
EXPIRE AFTER 12
PRE ALLOCATE 6;
说明 普通表转换成TTL表需要进行数据搬迁,请在业务低峰期进行操作。