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