次の方法で共有


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.enabledfalse に設定することで、この安全性チェックをオフにすることができます。

VACUUM table_name { { FULL | LITE } |  RETAIN num HOURS | DRY RUN } [...]

Databricks Runtime 16.0 以前の RETAIN num HOURS では、構文の DRY RUN の前に記述する必要があります。

重要

VACUUM コマンドのリテンション期間は、delta.deletedFileRetentionDuration テーブル プロパティによって決まります。既定では 7 日間です。 つまり、VACUUM は、過去 7 日間の Delta テーブル バージョンで参照されなくなったデータ ファイルを削除します。 長期間の移動時間をサポートするなど、データを長期間保持するには、このテーブル プロパティを高い値に設定します。 このしきい値を 30 日に設定する例を次に示します。

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

パラメーター

  • table_name

    既存の Delta テーブルを識別します。 名前には、 時仕様またはオプション指定を含めてはなりません

  • RETAIN num HOURS

    保有期間のしきい値。

  • DRY RUN

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

  • FULL または LITE

    適用対象: 「はい」のチェックマーク Databricks SQL 「はい」のチェックマーク Databricks Runtime 16.1 以降

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

    LITELite モードで真空操作を実行します。 VACUUM は、テーブル ディレクトリ内のすべてのファイルを検索する代わりに、Delta トランザクション ログを使用して、保持期間内にテーブル バージョンによって参照されなくなったファイルを識別して削除します。 デルタログが削除されたために VACUUM LITE を完了できない場合は、DELTA_CANNOT_VACUUM_LITE 例外が発生します。

    既定値は FULL です。

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

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

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

構文

VACUUM table_name [RETAIN num HOURS]

パラメーター

  • table_name

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

  • RETAIN num HOURS

    保有期間のしきい値。