VACUUM
適用対象: Databricks SQL Databricks Runtime
テーブル ディレクトリから未使用のファイルを削除します。
注意
このコマンドは、Delta テーブルと Apache Spark テーブルのどちらを使用しているかによって、動作が異なります。
Delta テーブルのバキューム
Delta テーブルに関連付けられているディレクトリを再帰的にバキュームします。 詳細と制限事項については、「vacuum を使って未使用のデータ ファイルを削除する」を参照してください。
VACUUM
は、Delta によって管理されていないテーブル ディレクトリのすべてのファイルと、テーブルのトランザクション ログが最新状態ではなく、かつリテンション期間のしきい値より古くなっているデータ ファイルを削除します。 VACUUM
は、アンダースコア (_
) で始まるすべてのディレクトリをスキップします。これには _delta_log
が含まれます。 アンダースコアで始まる列でテーブルをパーティション分割することは、この規則の例外です。VACUUM
は、ターゲット Delta テーブルに含まれるすべての有効なパーティションをスキャンします。 Delta テーブル データ ファイルは、ストレージ システム上の変更タイムスタンプではなく、Delta のトランザクション ログから論理的に削除されている時間と保有時間に応じて削除されます。 既定のしきい値は 7 日間です。
Azure Databricks は、Delta テーブルに対して VACUUM
操作を自動的にトリガーするわけではありません。
Delta テーブルに対して VACUUM
を実行すると、指定されたデータ保有期間よりも古いバージョンにタイム トラベルできなくなります。
警告
テーブルに対するコンカレント リーダーまたはライターによって、古いスナップショットとコミットされていないファイルが引き続き使用される可能性があるため、保有期間を少なくとも 7 日に設定することをお勧めします。 VACUUM
でアクティブなファイルをクリーンアップすると、コンカレント リーダーが失敗することがあります。さらに悪いことに、まだコミットされていないファイルを VACUUM
で削除した場合、テーブルが破損する可能性があります。 最も実行時間の長いコンカレント トランザクションよりも長く、テーブルに対する最新の更新に遅れて任意のストリームを開始できる最長期間よりも長い間隔を選択する必要があります。
Delta Lake には、危険性のある VACUUM
コマンドを実行できないようにする安全性チェックが用意されています。 Databricks Runtime では、このテーブルに対して、指定しようとしている保持期間よりも長くかかる操作が実行されていないことが確かな場合は、Spark 構成プロパティ spark.databricks.delta.retentionDurationCheck.enabled
を false
に設定することで、この安全性チェックをオフにすることができます。
VACUUM table_name [RETAIN num HOURS] [DRY RUN]
重要
VACUUM コマンドのリテンション期間は、 delta.deletedFileRetentionDuration
テーブル プロパティによって決まります。このプロパティの既定値は 7 日です。 つまり、VACUUM
は、過去 7 日間の Delta テーブル バージョンで参照されなくなったデータ ファイルを削除します。 データを長く保持する場合 (長時間の移動をサポートする場合など)、このテーブル プロパティを高い値に設定する必要があります。 このしきい値を 30 日に設定する例を次に示します。
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
パラメーター
-
既存の Delta テーブルを識別します。 名前には、 時仕様またはオプション指定を含めてはなりません。
RETAIN num HOURS
保有期間のしきい値。
DRY RUN
最大 1000 ファイルの削除するファイルの一覧を返します。
非 Delta テーブルのバキューム
非 Delta テーブルに関連付けられているディレクトリを再帰的にバキュームし、保有期間のしきい値より古い、コミットされていないファイルを削除します。 既定のしきい値は 7 日間です。
非 Delta テーブルでは、データが書き込まれると、Azure Databricks によって自動的に VACUUM
操作がトリガーされます。
構文
VACUUM table_name [RETAIN num HOURS]
パラメーター
-
名前またはパスで既存のテーブルを識別します。
RETAIN num HOURS
保有期間のしきい値。