DLF 每日将 Catalog 下各表和分区的存储用量、存储类型、文件分布、访问频次等统计信息汇总到 system 库的 table_summary 和 partition_summary 两张系统表,可用于排查小文件、识别冷数据、优化存储类型、追溯访问者等场景。
功能简介
table_summary:表级汇总,包含表基本属性、存储用量、存储类型、文件大小分布、访问频次等。partition_summary:分区级汇总,统计各分区的存储用量、存储类型、文件大小分布和访问频次。
数据 T+1 产出,统计 Catalog 下物理存储的全量数据。两张表的分区字段 dt 保留最近 30 天。
table_summary
表结构
以下为系统表内置定义,仅展示字段结构,无需手动执行。
CREATE TABLE `table_summary` (
`database_id` STRING COMMENT 'Database ID',
`database_name` STRING COMMENT 'Database name',
`table_id` STRING COMMENT 'Table ID',
`table_name` STRING COMMENT 'Table name',
`table_type` STRING COMMENT 'Table type',
`owner` STRING COMMENT 'Table owner',
`created_by` STRING COMMENT 'Created by',
`created_at` BIGINT COMMENT 'Creation time (epoch milliseconds)',
`updated_by` STRING COMMENT 'Updated by',
`updated_at` BIGINT COMMENT 'Last update time (epoch milliseconds)',
`obj_cnt` BIGINT COMMENT 'Data object count, total count = obj_cnt + meta_obj_cnt',
`obj_size` BIGINT COMMENT 'Data object size (bytes), total size = obj_size + meta_obj_size',
`meta_obj_cnt` BIGINT COMMENT 'Metadata object count',
`meta_obj_size` BIGINT COMMENT 'Metadata object size (bytes)',
`ts_file_count` BIGINT COMMENT 'Data object count in latest snapshot',
`ts_file_size_in_bytes` BIGINT COMMENT 'Data object size in latest snapshot (bytes)',
`obj_type_standard_size` BIGINT COMMENT 'Data object size in Standard storage (bytes)',
`obj_type_ia_size` BIGINT COMMENT 'Data object size in IA storage (bytes)',
`obj_type_archive_size` BIGINT COMMENT 'Data object size in Archive storage (bytes)',
`obj_type_coldarchive_size` BIGINT COMMENT 'Data object size in Cold Archive storage (bytes)',
`obj_size_tiny_cnt` BIGINT COMMENT 'Data object count (size <= 1 MB)',
`obj_size_small_cnt` BIGINT COMMENT 'Data object count (size 1 MB - 128 MB)',
`obj_size_middle_cnt` BIGINT COMMENT 'Data object count (size 128 MB - 1 GB)',
`obj_size_large_cnt` BIGINT COMMENT 'Data object count (size > 1 GB)',
`data_last_access_time` BIGINT COMMENT 'Last data object access time (epoch milliseconds)',
`obj_access_num` BIGINT COMMENT 'Daily data object access count',
`obj_access_num_7d` BIGINT COMMENT 'Data object access count in last 7 days',
`obj_access_num_30d` BIGINT COMMENT 'Data object access count in last 30 days',
`meta_last_access_time` BIGINT COMMENT 'Last metadata object access time (epoch milliseconds)',
`meta_obj_access_num` BIGINT COMMENT 'Daily metadata object access count',
`meta_obj_access_num_7d` BIGINT COMMENT 'Metadata object access count in last 7 days',
`meta_obj_access_num_30d` BIGINT COMMENT 'Metadata object access count in last 30 days',
`last_requester` STRING COMMENT 'Last requester',
`top_requester` STRING COMMENT 'Most frequent requester of the day',
`dt` STRING COMMENT 'Date (yyyyMMdd)'
) COMMENT 'Daily table-level summary'
PARTITIONED BY (dt) WITH (
'file.format' = 'avro',
'partition.expiration-time' = '30 d',
'partition.timestamp-formatter' = 'yyyyMMdd'
);字段说明
基本信息
字段 | 说明 |
database_id | 数据库 ID |
database_name | 数据库名称 |
table_id | 表 ID |
table_name | 表名称 |
table_type | 表类型:paimon-pk(Paimon主键表)、paimon-append(Paimon Append 表)、object-table(Object Table)、format-table(Format Table)等 |
owner | 表所有者 |
created_by | 创建者 |
created_at | 创建时间(毫秒时间戳) |
updated_by | 最后更新者 |
updated_at | 最后更新时间(毫秒时间戳) |
存储统计
字段 | 说明 |
obj_cnt | 数据文件数量。总文件数 = obj_cnt + meta_obj_cnt |
obj_size | 数据文件总大小(字节)。总存储量 = obj_size + meta_obj_size |
meta_obj_cnt | 元数据文件数量 |
meta_obj_size | 元数据文件总大小(字节) |
ts_file_count | 最新快照中的数据文件数量 |
ts_file_size_in_bytes | 最新快照中的数据文件大小(字节) |
存储类型
字段 | 说明 |
obj_type_standard_size | 标准存储类型的数据文件大小(字节) |
obj_type_ia_size | 低频访问存储类型的数据文件大小(字节) |
obj_type_archive_size | 归档存储类型的数据文件大小(字节) |
obj_type_coldarchive_size | 冷归档存储类型的数据文件大小(字节) |
文件大小分布
字段 | 说明 |
obj_size_tiny_cnt | 小于等于 1 MB 的数据文件数量 |
obj_size_small_cnt | 1 MB ~ 128 MB 的数据文件数量 |
obj_size_middle_cnt | 128 MB ~ 1 GB 的数据文件数量 |
obj_size_large_cnt | 大于 1 GB 的数据文件数量 |
访问统计
last_requester 和 top_requester 字段需在 DLF 控制台目录配置页签 > 高级配置部分开启 dlf.access-tracking.enabled = true,且计算引擎使用 Paimon >= 1.4 才能统计到访问者信息。
字段 | 说明 |
data_last_access_time | 数据文件最后访问时间(毫秒时间戳) |
obj_access_num | 数据文件当日访问次数 |
obj_access_num_7d | 数据文件近 7 天访问次数 |
obj_access_num_30d | 数据文件近 30 天访问次数 |
meta_last_access_time | 元数据文件最后访问时间(毫秒时间戳) |
meta_obj_access_num | 元数据文件当日访问次数 |
meta_obj_access_num_7d | 元数据文件近 7 天访问次数 |
meta_obj_access_num_30d | 元数据文件近 30 天访问次数 |
last_requester | 最后访问者(前置条件见上方说明) |
top_requester | 当日访问次数最多的访问者(前置条件见上方说明) |
分区字段
字段 | 说明 |
dt | 统计日期,格式 yyyyMMdd,保留最近 30 天 |
partition_summary
表结构
以下为系统表内置定义,仅展示字段结构,无需手动执行。
CREATE TABLE `partition_summary` (
`database_id` STRING COMMENT 'Database ID',
`database_name` STRING COMMENT 'Database name',
`table_id` STRING COMMENT 'Table ID',
`table_name` STRING COMMENT 'Table name',
`partition_name` STRING COMMENT 'Partition name',
`created_by` STRING COMMENT 'Created by',
`created_at` BIGINT COMMENT 'Creation time (epoch milliseconds)',
`updated_by` STRING COMMENT 'Updated by',
`updated_at` BIGINT COMMENT 'Last update time (epoch milliseconds)',
`obj_cnt` BIGINT COMMENT 'Data object count',
`obj_size` BIGINT COMMENT 'Data object size (bytes)',
`obj_type_standard_size` BIGINT COMMENT 'Data object size in Standard storage (bytes)',
`obj_type_ia_size` BIGINT COMMENT 'Data object size in IA storage (bytes)',
`obj_type_archive_size` BIGINT COMMENT 'Data object size in Archive storage (bytes)',
`obj_type_coldarchive_size` BIGINT COMMENT 'Data object size in Cold Archive storage (bytes)',
`obj_size_tiny_cnt` BIGINT COMMENT 'Data object count (size <= 1 MB)',
`obj_size_small_cnt` BIGINT COMMENT 'Data object count (size 1 MB - 128 MB)',
`obj_size_middle_cnt` BIGINT COMMENT 'Data object count (size 128 MB - 1 GB)',
`obj_size_large_cnt` BIGINT COMMENT 'Data object count (size > 1 GB)',
`data_last_access_time` BIGINT COMMENT 'Last data object access time (epoch milliseconds)',
`obj_access_num` BIGINT COMMENT 'Daily data object access count',
`obj_access_num_7d` BIGINT COMMENT 'Data object access count in last 7 days',
`obj_access_num_30d` BIGINT COMMENT 'Data object access count in last 30 days',
`last_requester` STRING COMMENT 'Last requester',
`top_requester` STRING COMMENT 'Most frequent requester of the day',
`dt` STRING COMMENT 'Date (yyyyMMdd)'
) COMMENT 'Daily partition-level summary'
PARTITIONED BY (dt) WITH (
'file.format' = 'avro',
'partition.expiration-time' = '30 d',
'partition.timestamp-formatter' = 'yyyyMMdd'
);字段说明
基本信息
字段 | 说明 |
database_id | 数据库 ID |
database_name | 数据库名称 |
table_id | 表 ID |
table_name | 表名称 |
partition_name | 分区名称 |
created_by | 创建者 |
created_at | 创建时间(毫秒时间戳) |
updated_by | 最后更新者 |
updated_at | 最后更新时间(毫秒时间戳) |
存储统计
字段 | 说明 |
obj_cnt | 数据文件数量 |
obj_size | 数据文件总大小(字节) |
存储类型
字段 | 说明 |
obj_type_standard_size | 标准存储类型的数据文件大小(字节) |
obj_type_ia_size | 低频访问存储类型的数据文件大小(字节) |
obj_type_archive_size | 归档存储类型的数据文件大小(字节) |
obj_type_coldarchive_size | 冷归档存储类型的数据文件大小(字节) |
文件大小分布
字段 | 说明 |
obj_size_tiny_cnt | 小于等于 1 MB 的数据文件数量 |
obj_size_small_cnt | 1 MB ~ 128 MB 的数据文件数量 |
obj_size_middle_cnt | 128 MB ~ 1 GB 的数据文件数量 |
obj_size_large_cnt | 大于 1 GB 的数据文件数量 |
访问统计
last_requester 和 top_requester 字段需在 DLF 控制台目录配置页签 > 高级配置部分开启 dlf.access-tracking.enabled = true,且计算引擎使用 Paimon >= 1.4 才能统计到访问者信息。
字段 | 说明 |
data_last_access_time | 数据文件最后访问时间(毫秒时间戳) |
obj_access_num | 数据文件当日访问次数 |
obj_access_num_7d | 数据文件近 7 天访问次数 |
obj_access_num_30d | 数据文件近 30 天访问次数 |
last_requester | 最后访问者(前置条件见上方说明) |
top_requester | 当日访问次数最多的访问者(前置条件见上方说明) |
分区字段
字段 | 说明 |
dt | 统计日期,格式 yyyyMMdd,保留最近 30 天 |
查询示例
支持使用DLF数据预览和外部计算引擎(如Flink)进行SQL查询:
DLF数据预览
使用 DLF 内置的数据预览功能直接执行 SQL 查询,无需额外配置计算引擎。操作详情和计费请参见数据探查。
Flink SQL
使用外部计算引擎(如 Flink)执行 SQL 查询,需先配置 DLF Paimon Catalog,详见Flink SQL访问DLF。
以下示例中如果出现 <yourCatalogName>、<tableID>、<date>、<startDate>、<endDate> 等尖括号包裹的字符串,均为占位符,请替换为实际值(日期格式为 yyyyMMdd)后再执行。
存储概览
查看 Catalog 近 N 天的总存储趋势
SELECT
dt,
COUNT(DISTINCT table_id) AS table_cnt,
SUM(obj_size) + SUM(meta_obj_size) AS total_size,
SUM(obj_size) AS total_data_obj_size,
SUM(meta_obj_size) AS total_meta_obj_size,
SUM(ts_file_size_in_bytes) AS total_latest_snapshot_data_obj_size
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE dt BETWEEN '<startDate>' AND '<endDate>' -- 替换为实际日期,格式 yyyyMMdd
GROUP BY dt
ORDER BY dt;查询某日所有表的存储概览
SELECT
database_id,
database_name,
table_id,
table_name,
table_type,
owner,
obj_size + meta_obj_size AS total_size,
obj_size AS data_obj_size,
ts_file_size_in_bytes AS latest_snapshot_data_obj_size,
ts_file_size_in_bytes * 1.0 / NULLIF(obj_size, 0) AS latest_snapshot_ratio
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
ORDER BY total_size DESC;查看某表各分区的存储详情
SELECT
database_id,
database_name,
table_id,
table_name,
partition_name,
obj_cnt AS data_obj_cnt,
obj_size AS data_obj_size
FROM `<yourCatalogName>`.`system`.`partition_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
AND table_id = '<tableID>'
ORDER BY data_obj_size DESC;查看某表近 N 天的存储趋势
SELECT
dt,
obj_cnt AS data_obj_cnt,
obj_size + meta_obj_size AS total_size,
obj_size AS data_obj_size,
ts_file_size_in_bytes AS latest_snapshot_data_obj_size,
ts_file_size_in_bytes * 1.0 / NULLIF(obj_size, 0) AS latest_snapshot_ratio
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE table_id = '<tableID>'
AND dt BETWEEN '<startDate>' AND '<endDate>' -- 替换为实际日期,格式 yyyyMMdd
ORDER BY dt;小文件治理
查找物理存储中小文件较多的表
SELECT
database_id,
database_name,
table_id,
table_name,
table_type,
obj_cnt AS data_obj_cnt,
obj_size AS data_obj_size,
obj_size_tiny_cnt,
obj_size_small_cnt,
obj_size_tiny_cnt * 1.0 / NULLIF(obj_cnt, 0) AS tiny_obj_ratio,
(obj_size_tiny_cnt + obj_size_small_cnt) * 1.0 / NULLIF(obj_cnt, 0) AS small_obj_ratio,
obj_size / NULLIF(obj_cnt, 0) AS avg_data_obj_size
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
AND obj_cnt > 0
ORDER BY obj_size_tiny_cnt DESC;查找物理存储中小文件较多的分区
SELECT
database_id,
database_name,
table_id,
table_name,
partition_name,
obj_cnt AS data_obj_cnt,
obj_size AS data_obj_size,
obj_size_tiny_cnt,
obj_size_small_cnt,
obj_size_tiny_cnt * 1.0 / NULLIF(obj_cnt, 0) AS tiny_obj_ratio,
(obj_size_tiny_cnt + obj_size_small_cnt) * 1.0 / NULLIF(obj_cnt, 0) AS small_obj_ratio,
obj_size / NULLIF(obj_cnt, 0) AS avg_data_obj_size
FROM `<yourCatalogName>`.`system`.`partition_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
AND obj_cnt > 0
ORDER BY obj_size_tiny_cnt DESC;查看某表近 N 天的小文件趋势
SELECT
dt,
obj_cnt AS data_obj_cnt,
obj_size_tiny_cnt,
obj_size_small_cnt,
obj_size_middle_cnt,
obj_size_large_cnt,
obj_size_tiny_cnt * 1.0 / NULLIF(obj_cnt, 0) AS tiny_obj_ratio,
(obj_size_tiny_cnt + obj_size_small_cnt) * 1.0 / NULLIF(obj_cnt, 0) AS small_obj_ratio
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE table_id = '<tableID>'
AND dt BETWEEN '<startDate>' AND '<endDate>' -- 替换为实际日期,格式 yyyyMMdd
ORDER BY dt;识别小文件后,可参考存储优化进行小文件合并和存储治理。
生命周期管理
查看数据存储类型分布
SELECT
database_id,
database_name,
table_id,
table_name,
obj_size AS data_obj_size,
obj_type_standard_size,
obj_type_ia_size,
obj_type_archive_size,
obj_type_coldarchive_size
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
AND (obj_type_ia_size > 0 OR obj_type_archive_size > 0 OR obj_type_coldarchive_size > 0)
ORDER BY data_obj_size DESC;查找近 30 天无文件访问的表
SELECT
database_id,
database_name,
table_id,
table_name,
owner,
obj_size + meta_obj_size AS total_size,
data_last_access_time,
meta_last_access_time
FROM `<yourCatalogName>`.`system`.`table_summary`
WHERE dt = '<date>' -- 替换为实际日期,格式 yyyyMMdd
AND obj_access_num_30d = 0
AND meta_obj_access_num_30d = 0
ORDER BY total_size DESC;相关文档
通过DLF API查询存储统计系统表,请参考获取数据目录存储概览和获取库存储概览。