TDSQL Boundless TTL_TABLES

INFORMATION_SCHEMA.TTL_TABLES 展示当前实例中所有已启用 TTL(Time To Live)的表配置信息。该视图从数据字典中提取 TTL 相关的元数据,包括 TTL 时间列、保留时长、调度间隔、归档表绑定等,方便运维人员统一查看和管理 TTL 配置。

相关产品
TDSQL Boundless 产品页,含版本规格、价格与购买入口。

一、功能

该视图默认仅返回已配置 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 表配置

SELECT SCHEMA_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 的表

SELECT SCHEMA_NAME, TABLE_NAME, TTL_COLUMN, TTL_DURATION, TTL_INTERVAL_TYPEFROM INFORMATION_SCHEMA.TTL_TABLESWHERE TTL_ENABLE = 'OFF'ORDER BY SCHEMA_NAME, TABLE_NAME;

六、查看配置了归档的表

SELECT SCHEMA_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 表在各数据库中的分布

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_countFROM INFORMATION_SCHEMA.TTL_TABLESGROUP BY SCHEMA_NAMEORDER BY ttl_table_count DESC;

八、相关系统表

系统表/视图 说明
SYS.TTL_TASK 当前活跃的 TTL 任务及等待回收的终态任务。
SYS.TTL_TASK_HISTORY 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: 7TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 1h ARCHIVE_TABLE: NULL*************************** 2. row *************************** SCHEMA_NAME: mydb TABLE_NAME: operation_log TTL_ENABLE: ON TTL_COLUMN: created_at TTL_DURATION: 30TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 6h ARCHIVE_TABLE: NULL*************************** 3. row *************************** SCHEMA_NAME: mydb TABLE_NAME: orders TTL_ENABLE: ON TTL_COLUMN: created_at TTL_DURATION: 6TTL_INTERVAL_TYPE: MONTHTTL_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: 1TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 30m ARCHIVE_TABLE: NULL*************************** 5. row *************************** SCHEMA_NAME: testdb TABLE_NAME: app_logs TTL_ENABLE: ON TTL_COLUMN: log_time TTL_DURATION: 90TTL_INTERVAL_TYPE: DAYTTL_JOB_INTERVAL: 2h ARCHIVE_TABLE: archive_db.app_logs_archive5 rows in set (0.00 sec)

赞 (0)
上一篇 4天前
下一篇 4天前