本文介紹了TTL表創建、查看及刪除定時任務的方法。

在TTL表中創建定時任務成功后,每隔一段時間定時任務會掃描表中的所有物理時間分區。如果需要創建新分區,會被自動創建。如果需要刪除過期分區,會被自動刪除。過期時間和提前創建時間由建表時的local_partition_definition指定。

創建定時任務

CREATE SCHEDULE
    FOR partition_type
    ON [schemaName.]tableName
    CRON 'cron_expr'
    [TIMEZONE 'time_zone']

partition_type:
        LOCAL_PARTITION

cron_expr:
    '0 15 10 ? * *'   #每天上午10:15分過期
  | '0 15 10 ? * 6L'  #每月最后一個周五的早上10:15過期
  | '0 11 11 11 11 ?' #每個11月11日的早上11:11分過期
  | ...

time_zone:
    '+08:00'
  | '+00:00'
  | ...

查看TTL定時任務

創建TTL表時,會默認創建一個定時任務,用于物理時間分區(Local Partition)的調度。如果創建表時指定了DISABLE SCHEDULE語法,則不會自動創建該定時任務。

可以通過INFORMATION_SCHEMA.LOCAL_PARTITIONS_SCHEDULE視圖來查看當前有哪些定時任務。

說明 該定時任務只是定期掃描物理時間分區(Local Partition),具體的創建或刪除分區的時間是由建表時的參數決定的。
SELECT * FROM INFORMATION_SCHEMA.LOCAL_PARTITIONS_SCHEDULE\G;
*************************** 1. row ***************************
     SCHEDULE_ID: 21
     SCHEMA_NAME: local_partition
      TABLE_NAME: t_order
          STATUS: ENABLED
   SCHEDULE_EXPR: 0 0 12 1/5 * ?
SCHEDULE_COMMENT: at 12:00 every 5 days
       TIME_ZONE: +00:00
  LAST_FIRE_TIME: 1970-01-01 08:00:00
  NEXT_FIRE_TIME: 2021-11-01 12:00:00
1 row in set (0.03 sec)

查看定時任務執行結果

show schedule result 21\G;
*************************** 1. row ***************************
SCHEDULE_ID: 21
  TIME_ZONE: +00:00
  FIRE_TIME: 2021-11-08 04:20
 START_TIME:
FINISH_TIME:
      STATE: QUEUED
     REMARK: NULL
 RESULT_MSG: NULL
*************************** 2. row ***************************
SCHEDULE_ID: 21
  TIME_ZONE: +00:00
  FIRE_TIME: 2021-11-08 04:19
 START_TIME: 2021-11-08 04:19:50
FINISH_TIME: 2021-11-08 04:19:50
      STATE: SUCCESS
     REMARK: NULL
 RESULT_MSG: NULL

刪除定時任務

DROP SCHEDULE schedule_id;

示例

示例1

從每月第一天開始,每5天的中午12點過期,時區為+00:00。

CREATE SCHEDULE
FOR LOCAL_PARTITION
ON `local_partition`.`t_order`
CRON '0 0 12 1/5 * ?'
TIMEZONE '+00:00';

示例2

從每月第一天開始,每5天的中午12點過期。

CREATE SCHEDULE
FOR LOCAL_PARTITION
ON `local_partition`.`t_order`
CRON '0 0 12 1/5 * ?'
;

示例3

刪除定時任務526。

DROP SCHEDULE 526;