次の方法で共有


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 [RETAIN num HOURS] [DRY RUN]

重要

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

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

パラメーター

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

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

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

構文

VACUUM table_name [RETAIN num HOURS]

パラメーター

  • table_name

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

  • RETAIN num HOURS

    保有期間のしきい値。