帮你快速理解、总结文档立即下载

TTL_TASK_HISTORY

最近更新时间:2026-08-20 15:23:32
我的收藏

功能

SYS.TTL_TASK_HISTORY 记录 TTL(Time To Live)过期数据清理任务的历史信息,用于审计、问题排查和执行效果统计。当 SYS.TTL_TASK 中的任务完成后(状态为 finishedcancelled),系统会通过任务回收(GC)流程将完成的任务从 SYS.TTL_TASK 迁移到 SYS.TTL_TASK_HISTORY 中,同时释放 SYS.TTL_TASK 的唯一键占用,允许同一表的下一个任务被写入。
SYS.TTL_TASK_HISTORY 不记录进行中的任务(waitingrunning),仅保留已终态的任务记录。

适用版本

TDSQL Boundless V21.6.4.0及以上版本。

字段说明

字段名
类型
描述
task_id
bigint unsigned
任务唯一标识,对应 SYS.TTL_TASK 中的 task_id,NOT NULL。
table_schema
varchar(64)
数据库名,NOT NULL。
table_name
varchar(64)
表名,NOT NULL。
partition_name
varchar(64)
分区名。非分区表为空字符串。
tindex_id
bigint unsigned
表的存储索引标识 ID,DEFAULT 0。
expire_threshold
datetime
过期阈值时间点。任务下发时计算,下发后固定不变。
schema_version
bigint unsigned
下发任务时的 schema 版本号。
batch_size
int unsigned
单批删除行数。
status
ENUM
任务终态。
finished:已完成。
cancelled:已取消。
owner_id
varchar(64)
执行节点 ID。
scheduler_id
varchar(64)
下发任务的调度节点 ID。
strategy
ENUM('scan_then_delete','single_statement','archive_then_delete')
实际执行策略,详细请参见 执行策略说明
on_conflict
enum('STOP','REPLACE')
如果配置了归档表,归档任务遇到主键/唯一键冲突的处理方式。
deleted_rows
bigint unsigned
累计删除行数,DEFAULT 0。
error_message
text
错误或取消原因。
created_at
datetime
任务创建时间,NOT NULL。
started_at
datetime
任务开始执行时间。
finished_at
datetime
任务结束时间。

索引说明

索引名
类型
字段
用途
PRIMARY
主键
task_id
保证 task_id 唯一。
idx_table_finished
普通索引
table_schema, table_name, partition_name, finished_at
按表名查询历史记录,定位失败任务。
idx_finished_at
普通索引
finished_at
按结束时间范围清理或统计。
说明:
SYS.TTL_TASK 不同,SYS.TTL_TASK_HISTORY 没有唯一约束 uk_table_partition。同一张表(或分区)的历史任务可以同时存在多条记录,不限制活跃任务的数量。

相关系统表

系统表/视图
说明
当前活跃任务及等待回收的终态任务。
已启用 TTL 的表配置信息,包括 TTL 时间列、保留时长、调度间隔、归档表等。

示例

查询指定表的任务历史

tdsql> SELECT
-> task_id, status, strategy, deleted_rows,
-> error_message, created_at, finished_at
-> FROM SYS.TTL_TASK_HISTORY
-> WHERE table_schema = 'mydb'
-> AND table_name = 'operation_log'
-> ORDER BY finished_at DESC
-> LIMIT 5\\G
*************************** 1. row ***************************
task_id: 1024
status: finished
strategy: scan_then_delete
deleted_rows: 8500
error_message: NULL
created_at: 2026-07-08 15:25:00
finished_at: 2026-07-08 15:30:45
*************************** 2. row ***************************
task_id: 1015
status: finished
strategy: scan_then_delete
deleted_rows: 9200
error_message: NULL
created_at: 2026-07-08 14:25:00
finished_at: 2026-07-08 14:30:30
*************************** 3. row ***************************
task_id: 1005
status: cancelled
strategy: scan_then_delete
deleted_rows: 1200
error_message: schema_version changed during execution, task cancelled
created_at: 2026-07-08 13:25:00
finished_at: 2026-07-08 13:28:10
3 rows in set (0.00 sec)

统计最近7天的 TTL 清理量

tdsql> SELECT
-> table_schema, table_name,
-> COUNT(*) AS total_tasks,
-> SUM(deleted_rows) AS total_deleted_rows,
-> AVG(deleted_rows) AS avg_deleted_per_task
-> FROM SYS.TTL_TASK_HISTORY
-> WHERE finished_at >= DATE_SUB(NOW(), INTERVAL 7 DAY)
-> AND status = 'finished'
-> GROUP BY table_schema, table_name
-> ORDER BY total_deleted_rows DESC
-> LIMIT 3\\G
*************************** 1. row ***************************
table_schema: mydb
table_name: event_log
total_tasks: 168
total_deleted_rows: 8400000
avg_deleted_per_task: 50000.0000
*************************** 2. row ***************************
table_schema: mydb
table_name: operation_log
total_tasks: 24
total_deleted_rows: 204000
avg_deleted_per_task: 8500.0000
2 rows in set (0.01 sec)

查看已取消的任务及原因

tdsql> SELECT task_id, table_schema, table_name, error_message, finished_at
-> FROM SYS.TTL_TASK_HISTORY
-> WHERE status = 'cancelled'
-> AND finished_at >= DATE_SUB(NOW(), INTERVAL 1 DAY)
-> ORDER BY finished_at DESC
-> LIMIT 3\\G
*************************** 1. row ***************************
task_id: 1060
table_schema: mydb
table_name: orders
error_message: archive insert failed: target table not found
finished_at: 2026-07-08 15:10:20
*************************** 2. row ***************************
task_id: 1055
table_schema: mydb
table_name: logs
error_message: ttl_enable is OFF, task cancelled
finished_at: 2026-07-08 14:50:05
2 rows in set (0.00 sec)