本文介紹了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)行操作。