Niskie przetasowanie scalania na Azure Databricks

Delta Lake aktualizuje tabelę, przepisując całe pliki danych. Gdy polecenie MERGE aktualizuje lub usuwa kilka wierszy w pliku, musi również przepisać każdy niezmodyfikowany wiersz w tym pliku. Bez low shuffle merge te niezmodyfikowane wiersze przechodzą przez te same etapy tasowania co zmodyfikowane wiersze. To spowalnia MERGE i zakłóca istniejący układ danych, przez co późniejsze zapytania również działają wolniej.

Low shuffle merge to zoptymalizowana implementacja Azure Databricks MERGE. Przetwarza niezmodyfikowane wiersze oddzielnie od zmodyfikowanych, bez tasowania czy innych kosztownych obliczeń. W efekcie MERGE tasuje znacznie mniej danych i działa szybciej.

Low shuffle merge jest domyślnie włączony, więc nie musisz zmieniać swoich instrukcji MERGE, żeby z tego skorzystać. Najbardziej pomaga, gdy MERGE aktualizuje stosunkowo niewielką liczbę wierszy w dużej tabeli.

Układ danych po połączeniu

Wcześniejsza implementacja MERGE całkowicie zmieniła układ wszystkich niezmodyfikowanych danych, co spowolniło późniejsze operacje. Low shuffle merge stara się zachować istniejący układ niezmodyfikowanych wierszy, w tym układ liquid clustering. W efekcie wydajność spada wolniej po co najmniej jednym poleceniu MERGE, a Ty musisz uruchamiać OPTIMIZE rzadziej.

Układ zaktualizowanych lub nowo wstawionych wierszy może nie być optymalny. Może nadal będziesz musiał uruchamiać OPTIMIZE na tabelach z włączonym klastrowaniem płynnym.

W tabelach używających porządku Z, low shuffle merge stara się również zachować istniejący układ Z-order niezmodyfikowanych wierszy. Może nadal będziesz musiał uruchomić OPTIMIZE ZORDER BY po operacji MERGE . Usługa Databricks zaleca używanie płynnego klastrowania dla wszystkich nowych tabel.