功能
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 时间列名,用于判断数据是否过期。支持 DATE、DATETIME、DATETIME(N)、TIMESTAMP、TIMESTAMP(N) 类型,且该列必须为 NOT NULL。 |
TTL_DURATION | int unsigned | 保留时长数值。与 TTL_INTERVAL_TYPE 配合使用,表示数据保留的时长。例如 TTL_DURATION = 30、TTL_INTERVAL_TYPE = 'DAY' 表示保留30天。 |
TTL_INTERVAL_TYPE | varchar | 时间单位。 取值范围: YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MICROSECOND。 |
TTL_JOB_INTERVAL | varchar | 调度执行间隔。格式为 <数字><单位>,单位支持 s(秒)、m(分钟)、h(小时)、d(天)。默认 1h。 |
TTL_EXPR | varchar | 完整 TTL 表达式。由 TTL_COLUMN、TTL_DURATION 和 TTL_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_ENABLE 为 OFF 时,系统不会为该表下发 TTL 任务,但已存在的运行中任务不受影响。如需立刻停止任务,可手动取消 SYS.TTL_TASK 中对应的 running 任务。ARCHIVE_TABLE 为 NULL 时,过期数据将被直接删除;配置了归档表时,过期数据会先写入归档表再删除。常用查询
查看所有 TTL 表配置
SELECTSCHEMA_NAME,TABLE_NAME,TTL_ENABLE,TTL_COLUMN,TTL_DURATION,TTL_INTERVAL_TYPE,TTL_JOB_INTERVAL,IFNULL(ARCHIVE_TABLE, '-') AS ARCHIVE_TABLEFROM INFORMATION_SCHEMA.TTL_TABLESORDER BY SCHEMA_NAME, TABLE_NAME;
查找已暂停 TTL 的表
SELECTSCHEMA_NAME,TABLE_NAME,TTL_COLUMN,TTL_DURATION,TTL_INTERVAL_TYPEFROM INFORMATION_SCHEMA.TTL_TABLESWHERE TTL_ENABLE = 'OFF'ORDER BY SCHEMA_NAME, TABLE_NAME;
查看配置了归档的表
SELECTSCHEMA_NAME,TABLE_NAME,TTL_COLUMN,TTL_DURATION,TTL_INTERVAL_TYPE,ARCHIVE_TABLEFROM INFORMATION_SCHEMA.TTL_TABLESWHERE ARCHIVE_TABLE IS NOT NULLORDER BY SCHEMA_NAME, TABLE_NAME;
统计 TTL 表在各数据库中的分布
SELECTSCHEMA_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_countFROM INFORMATION_SCHEMA.TTL_TABLESGROUP BY SCHEMA_NAMEORDER 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: mydbTABLE_NAME: event_logTTL_ENABLE: ONTTL_COLUMN: created_atTTL_DURATION: 7TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 1hARCHIVE_TABLE: NULL*************************** 2. row ***************************SCHEMA_NAME: mydbTABLE_NAME: operation_logTTL_ENABLE: ONTTL_COLUMN: created_atTTL_DURATION: 30TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 6hARCHIVE_TABLE: NULL*************************** 3. row ***************************SCHEMA_NAME: mydbTABLE_NAME: ordersTTL_ENABLE: ONTTL_COLUMN: created_atTTL_DURATION: 6TTL_INTERVAL_TYPE: MONTHTTL_JOB_INTERVAL: 1hARCHIVE_TABLE: mydb.orders_history*************************** 4. row ***************************SCHEMA_NAME: mydbTABLE_NAME: user_sessionsTTL_ENABLE: OFFTTL_COLUMN: updated_atTTL_DURATION: 1TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 30mARCHIVE_TABLE: NULL*************************** 5. row ***************************SCHEMA_NAME: testdbTABLE_NAME: app_logsTTL_ENABLE: ONTTL_COLUMN: log_timeTTL_DURATION: 90TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 2hARCHIVE_TABLE: archive_db.app_logs_archive5 rows in set (0.00 sec)