本文介绍了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;