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