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 | Archive Storage類型的資料檔案大小(位元組) |
obj_type_coldarchive_size | 冷Archive Storage類型的資料檔案大小(位元組) |
檔案大小分布
欄位 | 說明 |
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 | Archive Storage類型的資料檔案大小(位元組) |
obj_type_coldarchive_size | 冷Archive Storage類型的資料檔案大小(位元組) |
檔案大小分布
欄位 | 說明 |
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查詢儲存統計系統資料表,請參考擷取資料目錄存放概覽和擷取庫儲存概覽。