本文介紹了TTL表相關(guān)的ALTER TABLE語(yǔ)法。
變更TTL表的定時(shí)任務(wù)
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(...)
創(chuàng)建新的物理時(shí)間分區(qū)
此命令多次調(diào)用不會(huì)無(wú)限制創(chuàng)建新分區(qū),只會(huì)創(chuàng)建預(yù)定時(shí)間內(nèi)的新分區(qū)。
ALTER TABLE t_order ALLOCATE LOCAL PARTITION;
刪除過(guò)期的物理時(shí)間分區(qū)
此命令多次調(diào)用不會(huì)無(wú)限制刪除已有分區(qū),只會(huì)刪除過(guò)期分區(qū)。
- 可以指定物理時(shí)間分區(qū)名,可通過(guò)information_schema.local_partitions獲取
ALTER TABLE t_order EXPIRE LOCAL PARTITION p20210401;
- 不指定分區(qū)名時(shí),刪除所有已過(guò)期的分區(qū)
ALTER TABLE t_order EXPIRE LOCAL PARTITION;
說(shuō)明 未失效分區(qū)不允許刪除,會(huì)報(bào)錯(cuò)。
TTL表轉(zhuǎn)換成普通表
ALTER TABLE t_order REMOVE LOCAL PARTITIONING;
說(shuō)明 TTL表轉(zhuǎn)換成普通表需要進(jìn)行數(shù)據(jù)搬遷,請(qǐng)?jiān)跇I(yè)務(wù)低峰期進(jìn)行操作。
普通表轉(zhuǎn)換成TTL表
ALTER TABLE t_order
LOCAL PARTITION BY RANGE (gmt_modified)
STARTWITH '2021-01-01'
INTERVAL 1 MONTH
EXPIRE AFTER 12
PRE ALLOCATE 6;
說(shuō)明 普通表轉(zhuǎn)換成TTL表需要進(jìn)行數(shù)據(jù)搬遷,請(qǐng)?jiān)跇I(yè)務(wù)低峰期進(jìn)行操作。