VACUUM

適用対象:check marked yes Databricks SQL check marked yes 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.enabledfalse に設定することで、この安全性チェックをオフにすることができます。

VACUUM table_name [RETAIN num HOURS] [DRY RUN]

パラメーター

  • table_name

    既存の Delta テーブルを識別します。 この名前には、テンポラル仕様を含めることはできません。

  • RETAIN num HOURS

    保有期間のしきい値。

  • DRY RUN

    最大 1000 ファイルの削除するファイルの一覧を返します。

非 Delta テーブルのバキューム

非 Delta テーブルに関連付けられているディレクトリを再帰的にバキュームし、保有期間のしきい値より古い、コミットされていないファイルを削除します。 既定のしきい値は 7 日間です。

非 Delta テーブルでは、データが書き込まれると、Azure Databricks によって自動的に VACUUM 操作がトリガーされます。

構文

VACUUM table_name [RETAIN num HOURS]

パラメーター

  • table_name

    名前またはパスで既存のテーブルを識別します。

  • RETAIN num HOURS

    保有期間のしきい値。