DLF は、カタログ内の各テーブルとパーティションの毎日のストレージ使用量、ストレージクラスの分布、ファイルサイズの分布、アクセス頻度の統計を、system データベース配下の 2 つのシステムテーブル、table_summary と partition_summary に集約します。これらを使用して、多数の小さいファイルを含むテーブルの検出、コールドデータの特定、ストレージクラス割り当ての最適化、および最近のアクセサーの追跡を行うことができます。
概要
table_summary: 基本的なテーブルプロパティ、ストレージ使用量、ストレージクラスの分布、ファイルサイズの分布、およびアクセス頻度を含むテーブルレベルの統計。partition_summary:各パーティションのストレージ使用量、ストレージクラスの分布、ファイルサイズの分布、アクセス頻度を含むパーティションレベルの統計情報。
データは日次で (T+1) 生成され、カタログ配下の完全な物理ストレージを反映します。両テーブルのパーティション列 dt は、直近 30 日分を保持します。
table_summary
スキーマ
以下は組み込みのスキーマ定義です。参考用に示しているものであり、手動で実行する必要はありません。
CREATE TABLE `table_summary` (
`database_id` STRING COMMENT 'データベース ID',
`database_name` STRING COMMENT 'データベース名',
`table_id` STRING COMMENT 'テーブル ID',
`table_name` STRING COMMENT 'テーブル名',
`table_type` STRING COMMENT 'テーブルタイプ',
`owner` STRING COMMENT 'テーブルオーナー',
`created_by` STRING COMMENT '作成者',
`created_at` BIGINT COMMENT '作成時刻 (エポックミリ秒)',
`updated_by` STRING COMMENT '更新者',
`updated_at` BIGINT COMMENT '最終更新時刻 (エポックミリ秒)',
`obj_cnt` BIGINT COMMENT 'データオブジェクト数、総数 = obj_cnt + meta_obj_cnt',
`obj_size` BIGINT COMMENT 'データオブジェクトサイズ (バイト)、合計サイズ = obj_size + meta_obj_size',
`meta_obj_cnt` BIGINT COMMENT 'メタデータオブジェクト数',
`meta_obj_size` BIGINT COMMENT 'メタデータオブジェクトサイズ (バイト)',
`ts_file_count` BIGINT COMMENT '最新スナップショットのデータオブジェクト数',
`ts_file_size_in_bytes` BIGINT COMMENT '最新スナップショットのデータオブジェクトサイズ (バイト)',
`obj_type_standard_size` BIGINT COMMENT '標準ストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_ia_size` BIGINT COMMENT 'IA ストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_archive_size` BIGINT COMMENT 'アーカイブストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_coldarchive_size` BIGINT COMMENT 'コールドアーカイブストレージ内のデータオブジェクトサイズ (バイト)',
`obj_size_tiny_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ <= 1 MB)',
`obj_size_small_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ 1 MB - 128 MB)',
`obj_size_middle_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ 128 MB - 1 GB)',
`obj_size_large_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ > 1 GB)',
`data_last_access_time` BIGINT COMMENT '最終データオブジェクトアクセス時刻 (エポックミリ秒)',
`obj_access_num` BIGINT COMMENT '本日のデータオブジェクトアクセス数',
`obj_access_num_7d` BIGINT COMMENT '過去 7 日間のデータオブジェクトアクセス数',
`obj_access_num_30d` BIGINT COMMENT '過去 30 日間のデータオブジェクトアクセス数',
`meta_last_access_time` BIGINT COMMENT '最終メタデータオブジェクトアクセス時刻 (エポックミリ秒)',
`meta_obj_access_num` BIGINT COMMENT '本日のメタデータオブジェクトアクセス数',
`meta_obj_access_num_7d` BIGINT COMMENT '過去 7 日間のメタデータオブジェクトアクセス数',
`meta_obj_access_num_30d` BIGINT COMMENT '過去 30 日間のメタデータオブジェクトアクセス数',
`last_requester` STRING COMMENT '最終リクエスタ',
`top_requester` STRING COMMENT 'その日の最も頻繁なリクエスタ',
`dt` STRING COMMENT '日付 (yyyyMMdd)'
) COMMENT '日次テーブルレベルのサマリー'
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 追加のみテーブル)、object-table (Object Table)、format-table (Format tables) など。 |
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 | 低頻度アクセス (IA) ストレージ内のデータファイルのサイズ (バイト)。 |
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 コンソールの Catalog Configuration タブ > Advanced Settings セクションで 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 | 統計日は |
partition_summary
スキーマ
以下は組み込みのスキーマ定義です。参考用に示しているものであり、手動で実行する必要はありません。
CREATE TABLE `partition_summary` (
`database_id` STRING COMMENT 'データベース ID',
`database_name` STRING COMMENT 'データベース名',
`table_id` STRING COMMENT 'テーブル ID',
`table_name` STRING COMMENT 'テーブル名',
`partition_name` STRING COMMENT 'パーティション名',
`created_by` STRING COMMENT '作成者',
`created_at` BIGINT COMMENT '作成時刻 (エポックミリ秒)',
`updated_by` STRING COMMENT '更新者',
`updated_at` BIGINT COMMENT '最終更新時刻 (エポックミリ秒)',
`obj_cnt` BIGINT COMMENT 'データオブジェクト数',
`obj_size` BIGINT COMMENT 'データオブジェクトサイズ (バイト)',
`obj_type_standard_size` BIGINT COMMENT '標準ストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_ia_size` BIGINT COMMENT 'IA ストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_archive_size` BIGINT COMMENT 'アーカイブストレージ内のデータオブジェクトサイズ (バイト)',
`obj_type_coldarchive_size` BIGINT COMMENT 'コールドアーカイブストレージ内のデータオブジェクトサイズ (バイト)',
`obj_size_tiny_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ <= 1 MB)',
`obj_size_small_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ 1 MB - 128 MB)',
`obj_size_middle_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ 128 MB - 1 GB)',
`obj_size_large_cnt` BIGINT COMMENT 'データオブジェクト数 (サイズ > 1 GB)',
`data_last_access_time` BIGINT COMMENT '最終データオブジェクトアクセス時刻 (エポックミリ秒)',
`obj_access_num` BIGINT COMMENT '本日のデータオブジェクトアクセス数',
`obj_access_num_7d` BIGINT COMMENT '過去 7 日間のデータオブジェクトアクセス数',
`obj_access_num_30d` BIGINT COMMENT '過去 30 日間のデータオブジェクトアクセス数',
`last_requester` STRING COMMENT '最終リクエスタ',
`top_requester` STRING COMMENT 'その日の最も頻繁なリクエスタ',
`dt` STRING COMMENT '日付 (yyyyMMdd)'
) COMMENT '日次パーティションレベルのサマリー'
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 | 低頻度アクセス (IA) ストレージ内のデータファイルのサイズ (バイト)。 |
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 コンソールの Catalog Configuration タブ > Advanced Settings セクションで 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 | 統計日は |
クエリ例
DLF または Flink SQL を使用して DLF システムテーブルにクエリを実行できます。
DLF データプレビュー
DLF のデータプレビューと検出機能を使用すると、別のコンピューティングエンジンをセットアップすることなく、SQL クエリを直接実行できます。詳細と料金については、「データプレビュー」をご参照ください。
Flink SQL
Flink を使用して SQL の例を実行するには、Flink で DLF カタログを設定する必要があります。詳細な設定手順については、「Flink SQL で DLF にアクセスする」をご参照ください。
以下の例では、<yourCatalogName>、<tableID>、<date>、<startDate>、<endDate> のように山括弧で囲まれた文字列はプレースホルダーです。クエリを実行する前に、各プレースホルダーを実際の値に置き換えてください (日付は yyyyMMdd 形式です)。
ストレージ概要
過去 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 を使用して table_summary および partition_summary システムテーブルをクエリするには、GetCatalogSummary および GetDatabaseSummary をご参照ください。