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

TTL_TABLES

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

功能

INFORMATION_SCHEMA.TTL_TABLES 展示当前实例中所有已启用 TTL(Time To Live)的表配置信息。该视图从数据字典中提取 TTL 相关的元数据,包括 TTL 时间列、保留时长、调度间隔、归档表绑定等,方便运维人员统一查看和管理 TTL 配置。
该视图默认仅返回已配置 TTL 的表(即表定义中包含 TTL = <time_column> + INTERVAL <value> <unit> 语句的表),未配置 TTL 的表不在此视图中出现。

适用版本

TDSQL Boundless V21.6.4.0及以上版本。

字段说明

字段名
类型
描述
SCHEMA_NAME
varchar
数据库名。
TABLE_NAME
varchar
表名。
TTL_ENABLE
varchar
表级 TTL 开关。
ON(默认值):已启用,系统将定期清理过期数据。
OFF:已暂停,系统不会为该表下发 TTL 任务。
TTL_COLUMN
varchar
TTL 时间列名,用于判断数据是否过期。支持 DATEDATETIMEDATETIME(N)TIMESTAMPTIMESTAMP(N) 类型,且该列必须为 NOT NULL
TTL_DURATION
int unsigned
保留时长数值。与 TTL_INTERVAL_TYPE 配合使用,表示数据保留的时长。例如 TTL_DURATION = 30TTL_INTERVAL_TYPE = 'DAY' 表示保留30天。
TTL_INTERVAL_TYPE
varchar
时间单位。
取值范围:YEARQUARTERMONTHWEEKDAYHOURMINUTESECONDMICROSECOND
TTL_JOB_INTERVAL
varchar
调度执行间隔。格式为 <数字><单位>,单位支持 s(秒)、m(分钟)、h(小时)、d(天)。默认 1h
TTL_EXPR
varchar
完整 TTL 表达式。由 TTL_COLUMNTTL_DURATIONTTL_INTERVAL_TYPE 拼接生成,格式为 列名 + INTERVAL <数值> <单位>
TINDEX_ID
int unsigned
表的存储索引标识 ID,用于在存储引擎中定位表数据。
TABLE_ID
bigint unsigned
表在数据字典中的内部 ID。
SCHEMA_VERSION
int unsigned
表当前的 schema 版本号。
ARCHIVE_TABLE
varchar
归档目标表全限定名,格式为 db.table。未配置归档表时为 NULL。
ARCHIVE_ON_CONFLICT
longtext
TTL 归档任务和归档表已有数据遇到主键/唯一键冲突时的处理方式。
说明:
TTL_ENABLEOFF 时,系统不会为该表下发 TTL 任务,但已存在的运行中任务不受影响。如需立刻停止任务,可手动取消 SYS.TTL_TASK 中对应的 running 任务。
ARCHIVE_TABLE 为 NULL 时,过期数据将被直接删除;配置了归档表时,过期数据会先写入归档表再删除。

常用查询

查看所有 TTL 表配置

SELECT
SCHEMA_NAME,
TABLE_NAME,
TTL_ENABLE,
TTL_COLUMN,
TTL_DURATION,
TTL_INTERVAL_TYPE,
TTL_JOB_INTERVAL,
IFNULL(ARCHIVE_TABLE, '-') AS ARCHIVE_TABLE
FROM INFORMATION_SCHEMA.TTL_TABLES
ORDER BY SCHEMA_NAME, TABLE_NAME;

查找已暂停 TTL 的表

SELECT
SCHEMA_NAME,
TABLE_NAME,
TTL_COLUMN,
TTL_DURATION,
TTL_INTERVAL_TYPE
FROM INFORMATION_SCHEMA.TTL_TABLES
WHERE TTL_ENABLE = 'OFF'
ORDER BY SCHEMA_NAME, TABLE_NAME;

查看配置了归档的表

SELECT
SCHEMA_NAME,
TABLE_NAME,
TTL_COLUMN,
TTL_DURATION,
TTL_INTERVAL_TYPE,
ARCHIVE_TABLE
FROM INFORMATION_SCHEMA.TTL_TABLES
WHERE ARCHIVE_TABLE IS NOT NULL
ORDER BY SCHEMA_NAME, TABLE_NAME;

统计 TTL 表在各数据库中的分布

SELECT
SCHEMA_NAME,
COUNT(*) AS ttl_table_count,
SUM(TTL_ENABLE = 'ON') AS enabled_count,
SUM(TTL_ENABLE = 'OFF') AS disabled_count,
SUM(ARCHIVE_TABLE IS NOT NULL) AS archive_count
FROM INFORMATION_SCHEMA.TTL_TABLES
GROUP BY SCHEMA_NAME
ORDER BY ttl_table_count DESC;

相关系统表

系统表/视图
说明
当前活跃的 TTL 任务及等待回收的终态任务。
TTL 任务历史记录,用于审计和问题排查。

示例

tdsql> SELECT SCHEMA_NAME, TABLE_NAME, TTL_ENABLE, TTL_COLUMN,
-> TTL_DURATION, TTL_INTERVAL_TYPE, TTL_JOB_INTERVAL,
-> ARCHIVE_TABLE
-> FROM INFORMATION_SCHEMA.TTL_TABLES
-> ORDER BY SCHEMA_NAME, TABLE_NAME
-> LIMIT 5\\G
*************************** 1. row ***************************
SCHEMA_NAME: mydb
TABLE_NAME: event_log
TTL_ENABLE: ON
TTL_COLUMN: created_at
TTL_DURATION: 7
TTL_INTERVAL_TYPE: DAY
TTL_JOB_INTERVAL: 1h
ARCHIVE_TABLE: NULL
*************************** 2. row ***************************
SCHEMA_NAME: mydb
TABLE_NAME: operation_log
TTL_ENABLE: ON
TTL_COLUMN: created_at
TTL_DURATION: 30
TTL_INTERVAL_TYPE: DAY
TTL_JOB_INTERVAL: 6h
ARCHIVE_TABLE: NULL
*************************** 3. row ***************************
SCHEMA_NAME: mydb
TABLE_NAME: orders
TTL_ENABLE: ON
TTL_COLUMN: created_at
TTL_DURATION: 6
TTL_INTERVAL_TYPE: MONTH
TTL_JOB_INTERVAL: 1h
ARCHIVE_TABLE: mydb.orders_history
*************************** 4. row ***************************
SCHEMA_NAME: mydb
TABLE_NAME: user_sessions
TTL_ENABLE: OFF
TTL_COLUMN: updated_at
TTL_DURATION: 1
TTL_INTERVAL_TYPE: DAY
TTL_JOB_INTERVAL: 30m
ARCHIVE_TABLE: NULL
*************************** 5. row ***************************
SCHEMA_NAME: testdb
TABLE_NAME: app_logs
TTL_ENABLE: ON
TTL_COLUMN: log_time
TTL_DURATION: 90
TTL_INTERVAL_TYPE: DAY
TTL_JOB_INTERVAL: 2h
ARCHIVE_TABLE: archive_db.app_logs_archive
5 rows in set (0.00 sec)