デルタレイクは、データファイル全体を書き換えることでテーブルを更新します。
MERGEコマンドがファイル内の数行を更新または削除すると、そのファイルの未修正行すべても書き換えなければなりません。 ローシャッフルマージがなければ、修正されていない行は修正済みの行と同じシャッフル段階を通過します。 これにより MERGE が遅くなり、既存のデータレイアウトが乱れるため、後のクエリも遅くなります。
低シャッフル マージはMERGEの最適化されたAzure Databricks実装です。 修正されていない行を修正された行と別々に処理します。シャッフルや高価な計算は行いません。 その結果、MERGE シャッフルするデータ量が大幅に減り、動作も速くなります。
ロー シャッフル マージは既定で有効になっているため、そのメリットを得るために MERGE ステートメントを変更する必要はありません。
MERGEが大きなテーブルの比較的少ない行数を更新するときに最も効果的です。
マージ後のデータレイアウト
以前の MERGE 実装により、変更されていないデータのデータ レイアウトが完全に変わり、後の操作が遅くなりました。 Low shuffle merge は、liquid clustering レイアウトを含む、変更されていない行の既存のレイアウトを保持しようとします。 その結果、1つ以上の MERGE コマンドの後でパフォーマンスの低下がより緩やかになり、OPTIMIZE の実行頻度を下げることができます。
更新された行や新たに挿入された行の配置が最適でない場合もあります。 それでもリキッドクラスタリングを有効にしたテーブルで OPTIMIZE を実行する必要があるかもしれません。
Z順序を用いるテーブルでは、ローシャッフルマージは修正されていない行の既存のZ順序レイアウトを保持しようとします。 ORDER BYは、操作の後でも実行する必要があるかもしれません。 Databricks では、すべての新しいテーブルに液体クラスタリングを使用することをお勧めします。