動的ファイルプルーニング
動的なファイル プルーニングにより、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
列を確認します。