次の方法で共有


VACUUM

適用対象: 「はい」チェックマークがオン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.enabledfalse に設定することで、この安全性チェックをオフにすることができます。

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 の前に記述する必要があります。

パラメーター

  • table_name

    既存の Delta テーブルを識別します。 名前には、一時的な仕様またはオプションの仕様を含めることはできません。

  • RETAIN num HOURS

    保有期間のしきい値。 指定した保有期間が delta.deletedFileRetentionDurationを超える場合は、テーブルの保持期間が使用されます。

  • DRY RUN

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

  • FULL または LITE

    適用対象:チェックマーク付き: はい Databricks SQL チェックマーク付き: はい Databricks Runtime 16.1 以降

    FULL はを指定すると、バキューム操作がフル モードで実行されます。 これにより、保持期間の範囲外のデータ ファイルと、テーブルによって参照されていないテーブル ディレクトリ内のすべてのファイルが削除されます。

    LITELite モードで真空操作を実行します。 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]

パラメーター

  • table_name

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

  • RETAIN num HOURS

    保有期間のしきい値。