DLF ストレージ最適化は、アダプティブなコンパクション、期限切れスナップショットのクリーンアップ、パーティションのライフサイクル管理、および孤立ファイルのクリーンアップを通じて、Paimon テーブルのメンテナンスを簡素化します。本ガイドでは、利用可能な最適化戦略と DLF による実行方法について説明します。
ストレージ最適化戦略
|
戦略タイプ |
説明 |
DLF の実行メカニズム |
|
小規模なファイルを大規模なファイルにマージし、ファイル数、メタデータのオーバーヘッド、クエリ時のファイル検索コストを削減します。これにより、Paimon テーブルのクエリパフォーマンスが向上します。 |
DLF は、データ書き込みがコミットされた際に自動的にコンパクションをトリガーします。 |
|
|
スナップショットは参照されているデータファイルを削除から保護し、履歴状態を維持します。スナップショットが蓄積されると、ストレージ使用量が増加します。不要になったスナップショットを有効期限切れにすることで、ストレージ領域を解放できます。 |
DLF は、ストレージ最適化ジョブ中に期限切れスナップショットのクリーンアップを自動的にトリガーします。デフォルトの有効期限は 1 時間で、Paimon テーブルのパラメーターを通じて調整可能です。詳細については、「期限切れデータのクリーンアップ」をご参照ください。 |
|
|
多くのシナリオでは、最新のデータのみが必要です。時系列でパーティション化し、有効期限ルールを設定することで、古いパーティションを自動的に削除し、ストレージを解放できます。インテリジェントなストレージ階層化を構成して、アクセス頻度の低いデータを標準ストレージから低コストのストレージクラス(低頻度アクセス、アーカイブ、またはコールドアーカイブ)に移動することも可能です。 |
パーティションの有効期限の設定で、Paimon テーブルのパラメーターを通じて有効期限を設定します。設定後、クリーンアップは DLF ストレージ最適化ジョブ中に自動的にトリガーされます。インテリジェントなストレージ階層化を使用して、対象となるパーティションデータを低コストのストレージクラスに移動するか、テーブル詳細ページで手動でストレージクラスを変更できます。ストレージ概要ページには、カタログ、データベース、テーブルごとの階層化ディストリビューションが表示されます。 |
|
|
孤立ファイルとは、テーブルのストレージパス下に存在しながら、どのスナップショットにも参照されていないファイルのことです。通常、中断された書き込みジョブ、失敗したコミット、または異常なクリーンアッププロセスの残留物によって発生します。これらのファイルはスナップショットによって参照されていないため、スナップショットの有効期限切れによって削除されず、定期的なクリーンアップが必要です。 |
コンソールから手動で孤立ファイルのクリーンアップをトリガーするか、自動クリーンアップを有効化できます。クリーンアップされた孤立ファイルは一時的にゴミ箱 ( |
インテリジェントなストレージ最適化の有効化または無効化
[ストレージ最適化] タブは、Paimon テーブルでのみ表示されます。
-
DLF コンソールにログインします
-
カタログページで、対象のカタログ名をクリックします。
-
Databaseタブで、対象のデータベース名をクリックし、そのテーブルを表示します。
-
Tablesリストで、対象のテーブル名をクリックし、スキーマ情報を表示します。
-
Storage Optimizationタブをクリックします。インテリジェントなストレージ最適化スイッチはデフォルトで有効になっています。無効にする場合は、
スイッチをクリックします。
ストレージ最適化戦略の確認と構成
コンパクション
Storage Optimizationタブで、コンパクションをクリックし、実行ステータス、リスケールレコード、および実行履歴を確認します。
要件に応じてポリシーモードを編集します。
動的リソースモード(推奨)
システムはリアルタイムのワークロードに基づいて計算リソースを自動的にスケーリングし、手動での容量計画を不要にします。トラフィックの変動が大きい場合に適しています。
以下の 3 種類の構成プリファレンスを利用できます。
-
バランス型:コンパクション速度とリソース消費のバランスをとります(デフォルト)。
-
低遅延:より多くのリソースを割り当ててコンパクションを高速化し、データの可視性遅延を短縮します。
-
低リソース使用:リソース使用量を制限して計算コストを削減しますが、コンパクション時間が長くなります。
動的リソース割り当てとスケーリング
固定リソースモード
コンパクション用の計算リソースを手動で指定します。トラフィックが安定している場合や、コストを厳密に管理したい場合に適しています。
-
構成要件:最小 2 CU。
-
パラメーター設定:コンパクションのトリガー間隔およびバケット数をカスタマイズできます。
実行ステータスの確認
現在のテーブルの最適化実行ステータスを確認し、レイクハウス最適化のモニタリングを通じて CloudMonitor アラートサブスクリプションを構成できます。
リスケールレコードの確認
テーブルまたは特定のパーティションのバケットリスケーリングイベントを記録し、物理ストレージ構造の変更を反映します。リスケーリングは、データ量の変化に起因するパフォーマンスの問題に対処します。これらのレコードを使用して、テーブルがリスケール中かどうかを確認できます(リスケール中はコンパクションが実行されません)。
実行履歴の確認
現在のテーブルのコンパクション実行履歴を確認します。これらのレコードは以下の目的で使用します。
-
タスク実行の確認:バックグラウンドのコンパクションタスクが正しく実行され、小規模ファイルの蓄積を防いでいることを検証します。
-
コンパクション効率の評価:コンパクション前後のファイル数およびサイズを比較し、戦略の有効性を評価します。
期限切れスナップショットのクリーンアップ
Storage Optimizationタブで、期限切れスナップショットのクリーンアップをクリックし、クリーンアップルールを構成および結果を確認します。
-
スナップショットのクリーンアップルールの構成
Modifyをクリックし、Snapshot Retention Period(デフォルトは 1 時間)を設定し、Saveをクリックします。
-
スナップショットのクリーンアップ結果の確認
-
現在のスナップショット数:残存するスナップショットの数。
-
最も古いスナップショット情報:スナップショット ID、コミット時刻、コミットタイプ、総行数、およびコミット時に追加された行数を含む、最も古いスナップショットの詳細。
-
パーティションのライフサイクル管理
Storage Optimizationタブで、パーティションのライフサイクルをクリックし、クリーンアップルールおよびストレージ階層化を構成・確認します。
パーティションのクリーンアップルール
-
[Expired Partition Cleanup] の横にある
スイッチをクリックして、有効にしてください。 -
以下のクリーンアップルールを構成し、Saveをクリックします。
これらの設定は、テーブルオプションのキーと値のペアを通じても構成可能です。
パラメーター
説明
Expiration Policy
(partition.expiration-strategy)
以下の有効期限戦略から 1 つを選択できます。
-
最終アクセス時刻に基づく (access-time):パーティションの最終アクセス時刻に基づいて有効期限を設定します。
-
パーティション値に基づく (values-time):パーティションのタイムスタンプ形式およびパターンを構成できます。
-
タイムスタンプ形式 (partition.timestamp-formatter):
yyyy-MM-dd、yyyyMdd、dd/MM/yyyy、dd.MM.yyyyなどの形式を構成できます。 -
タイムスタンプパターン (partition.timestamp-pattern): デフォルトでは最初のパーティションフィールドが使用されます。
$dtや$year-$month-$dayなどのパターンを構成できます。
-
-
最終更新時刻に基づく (update-time):パーティションの最終更新時刻に基づいて有効期限を設定します。
Partition Retention Period
(partition.expiration-time)
単位:日。例:
30d。最大値は 999,999 日です。保存期間は選択した有効期限戦略に基づいて開始されます。 -
-
(任意)保存後、Modify横のCleanup Rule Settingsをクリックし、設定を変更します。
パーティションを永続的に保持する場合は、有効期限ルールを構成しないでください。システムはデフォルトでパーティションデータをクリーンアップしません。
パーティションのクリーンアップ結果
View Partitionsをクリックし、パーティション名、行数、参照ファイル、ファイルサイズ、作成者、ストレージクラス、最終変更者、タイムスタンプ、および操作を含むパーティションリストを確認します。
ストレージ階層化
|
パラメーター |
説明 |
|
Intelligent Tiering |
説明
|
|
Tiering Strategy |
|
|
Tiering Rule |
ストレージクラスごとに、最小保存期間の要件が異なります。 階層化ルールを構成します。
|
インテリジェントなストレージ階層化に加えて、テーブル詳細ページで手動でストレージクラスを変更できます。ストレージ概要ページには、カタログ、データベース、テーブルごとの階層化ディストリビューションが表示されます。
孤立ファイルのクリーンアップ
Storage Optimizationタブで、孤立ファイルのクリーンアップをクリックし、手動で孤立ファイルのクリーンアップをトリガーします。
自動クリーンアップを有効化するには、カタログ構成に auto-orphan-files-clean.enabled = true を追加します。クリーンアップされた孤立ファイルは一時的にゴミ箱 (system.trash) に移動されます。ゴミ箱内のファイルの保持期間は、カタログ構成の dlf.trashed-file-retained-days で調整できます。
ストレージクラスの手動変更
-
Databaseリストで、データベース名をクリックし、テーブルリストを表示します。
-
Tablesリストで、テーブル名をクリックし、スキーマを表示します。
-
Table Detailsタブをクリックし、パーティションテーブルおよび非パーティション化テーブルのストレージクラスを手動で変更します。
パーティションテーブル
Partitionsタブで、パーティションのストレージクラスを変更できます。
-
標準、低頻度アクセス、またはアーカイブストレージクラスにあるパーティションの場合:
Actions列で、Modify Storage Classをクリックし、他のストレージクラスに変更します。
-
コールドアーカイブストレージクラスにあるパーティションの場合:
まずデータを復元してから、ストレージクラスを変更します。
-
[Restore]をクリックし、[Restored Copy Availability Duration]を設定します。複数のパーティションをバッチ復元用に選択できます。
-
有効値:1 ~ 365 の整数(単位:日)。
-
デフォルト値:1 日。
-
-
データが解凍状態になると、Actions列でModify Storage Classをクリックして、ストレージクラスを変更します。
-
非パーティション化テーブル
テーブルのBasic Informationセクションで、Storage Classを変更できます。
-
標準、低頻度アクセス、またはアーカイブストレージクラスの場合:
Storage Class横のEditをクリックし、他のストレージクラスに変更します。
-
コールドアーカイブストレージクラスの場合:
まずデータを復元してから、ストレージクラスを変更します。
-
[Restore]を[Storage Class]の横でクリックし、[Restored Copy Availability Duration]を設定します。
-
有効値:1 ~ 365 の整数(単位:日)。
-
デフォルト値:1 日。
-
-
Storage Classが「コールドアーカイブ(解凍済み)」に変更されたら、Storage Class横のEditをクリックします。その後、他のストレージクラスに変更できます。
-
説明-
解凍時間:コールドアーカイブは標準解凍優先度のみをサポートしており、2 ~ 5 時間かかります。
-
解凍状態の開始時刻:パーティション内の最初のコールドアーカイブオブジェクトが解凍完了後に解凍状態に入った時点です。
-
解凍コピーの可用期間:コールドアーカイブから復元された後、データがアクセス可能な期間です。有効期限が切れると、パーティションは再び凍結ステータスに戻ります。再度アクセスするには、新しい解凍リクエストを送信する必要があります。
復元手順
-
オブジェクトは凍結ステータスで開始されます。
-
解凍リクエストを送信後、オブジェクトは解凍中ステータスに入ります。解凍時間は異なります。
-
解凍が完了すると、オブジェクトは解凍状態に入ります。テーブルレベルのストレージ階層化の場合、すべてのオブジェクトが解凍された後、パーティションがアクセス可能になります。
解凍状態の期間は、解凍コピーの可用期間を調整することで延長できます(ストレージクラスで許容される最大値まで)。
-
解凍コピーの可用期間が切れると、オブジェクトは再び凍結ステータスに戻ります。再度アクセスするには、新しい解凍リクエストを送信する必要があります。
-
有効化すると、システムは構成されたライフサイクルルールに基づき、カタログ内のすべてのテーブルに対して自動的にストレージ階層化を実施します。必要に応じて戦略およびルールを指定してください。