動的ファイルプルーニング
動的なファイルプルーニングは、Delta Lakeテーブルに対する多くのクエリのパフォーマンスを大幅に向上させることができます。動的ファイル削除は、クエリ最適化の決定に基づいて、またフィルタステートメントまたはWHERE句を含むクエリに対してトリガーされます。MERGE 、 UPDATE 、およびDELETEステートメントでの動的ファイル プルーニングの使用を保証するには、Photon 対応のコンピュートを使用する必要があります。 Photonを使用しない場合、 SELECTステートメントのみが動的ファイルプルーニングの使用を保証します。
動的ファイルプルーニングは、パーティション化されていないテーブル、またはパーティション化されていない列での結合に対して特に効率的です。動的ファイル剪定のパフォーマンス効果は、多くの場合、 データの量と相関関係にあるため、 Z-Ordering使用してメリットを最大化することを検討してください。
動的ファイルプルーニングの背景とユースケースについては、「 動的ファイルプルーニングを使用した Delta Lake での高速 SQL クエリ」を参照してください。
構成
動的ファイルプルーニングは、次の Apache Spark 設定オプションによって制御されます。
spark.databricks.optimizer.dynamicFilePruning(デフォルトはtrue): オプティマイザにフィルタを押し下げるように指示するメインフラグ。falseに設定すると、動的ファイルプルーニングは有効になりません。spark.databricks.optimizer.deltaTableSizeThreshold(デフォルトは10,000,000,000 bytes (10 GB)): 動的ファイルプルーニングをトリガーするために必要な結合のプローブ側の Delta テーブルの最小サイズ (バイト単位) を表します。 プローブ側がそれほど大きくない場合は、フィルターを押し下げる価値はおそらくなく、テーブル全体をスキャンするだけでよいでしょう。 Delta テーブルのサイズは、DESCRIBE DETAIL table_nameコマンドを実行し、sizeInBytes列を調べることで確認できます。spark.databricks.optimizer.deltaTableFilesThreshold(デフォルトは10): 動的ファイルプルーニングをトリガーするために必要な結合のプローブ側にある Delta テーブルのファイル数を表します。 プローブ・サイド・テーブルに含まれるファイルがしきい値より少ない場合、動的ファイル・プルーニングはトリガーされません。 テーブルに少数のファイルしかない場合は、動的ファイルプルーニングを有効にする価値はおそらくありません。 Delta テーブルのサイズは、DESCRIBE DETAIL table_nameコマンドを実行し、numFiles列を調べることで確認できます。