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