Låg shuffle-sammanslagning på Azure Databricks

Delta Lake uppdaterar en tabell genom att skriva om hela datafiler. När ett MERGE-kommando uppdaterar eller tar bort några rader i en fil måste det också skriva om varje oförändrad rad i den filen. Utan low shuffle merge går dessa omodifierade rader igenom samma shuffle-steg som de modifierade raderna. Detta gör MERGE långsammare och rör till den befintliga datalayouten, så senare frågor saktar också ner.

Low shuffle merge är den optimerade Azure Databricks-implementeringen av MERGE. Den bearbetar omodifierade rader separat från modifierade rader, utan omfördelningar eller andra kostsamma beräkningar. Som ett resultat skyfflar MERGE mycket mindre data och går snabbare.

Low shuffle merge är aktiverad som standard, så du behöver inte ändra dina MERGE satser för att dra nytta av det. Det hjälper mest när en MERGE uppdaterar ett relativt litet antal rader i en stor tabell.

Datalayouten efter en sammanslagning

Den tidigare MERGE implementeringen ändrade helt datalayouten för omodifierad data, vilket saktade ner senare operationer. Low shuffle merge försöker bevara den befintliga layouten av omodifierade rader, inklusive liquid clustering-layouten . Som ett resultat försämras prestandan långsammare efter ett eller flera MERGE kommandon, och du behöver köra OPTIMIZE mer sällan.

Layouten av uppdaterade eller nyinsatta rader kanske inte är optimal. Du kan fortfarande behöva köra OPTIMIZE på tabeller med liquid clustering aktiverat.

För tabeller som använder Z-ordning försöker low shuffle merge också bevara den befintliga Z-ordningslayouten för omodifierade rader. Du kan fortfarande behöva köra OPTIMIZE ZORDER BY efter en MERGE operation. Databricks rekommenderar att du använder flytande kluster för alla nya tabeller.