OPTIMIZE

Van toepassing op:check marked yes Databricks SQL check marked yes Databricks Runtime

Optimaliseert de indeling van Delta Lake-gegevens. U kunt desgewenst een subset van gegevens of colocategegevens per kolom optimaliseren. Als u geen colocatie opgeeft, wordt optimalisatie van bin-verpakking uitgevoerd.

Syntaxis

OPTIMIZE table_name [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Notitie

  • Optimalisatie van bin-verpakking is idempotent, wat betekent dat als deze twee keer op dezelfde gegevensset wordt uitgevoerd, de tweede uitvoering geen effect heeft. Het is erop gericht om gelijkmatig verdeelde gegevensbestanden te produceren met betrekking tot hun grootte op schijf, maar niet noodzakelijkerwijs het aantal tuples per bestand. De twee metingen worden echter het vaakst gecorreleerd.
  • Z-Ordering is niet idempotent , maar is een incrementele bewerking. De tijd die nodig is voor Z-Ordering is niet gegarandeerd om te verminderen over meerdere uitvoeringen. Als er echter geen nieuwe gegevens zijn toegevoegd aan een partitie die alleen Z-Geordende was, heeft een andere Z-Volgorde van die partitie geen effect. Het is erop gericht om gelijkmatig verdeelde gegevensbestanden te produceren met betrekking tot het aantal tuples, maar niet noodzakelijkerwijs gegevensgrootte op schijf. De twee metingen zijn het vaakst gecorreleerd, maar er kunnen situaties zijn waarin dat niet het geval is, wat leidt tot scheeftrekken in het optimaliseren van taaktijden.

Notitie

Stel tijdens het gebruik van Databricks Runtime de Spark-configuratiespark.databricks.delta.optimize.maxFileSize in om de grootte van het uitvoerbestand te beheren. De standaardwaarde is 1073741824, waarmee de grootte wordt ingesteld op 1 GB. Als u de waarde 104857600 opgeeft, wordt de bestandsgrootte ingesteld op 100 MB.

Parameters

  • Table_name

    Identificeert een bestaande Delta-tabel. De naam mag geen tijdelijke specificatie bevatten.

  • WHERE

    Optimaliseer de subset van rijen die overeenkomen met het opgegeven partitiepredicaat. Alleen filters met betrekking tot partitiesleutelkenmerken worden ondersteund.

  • ZORDER BY

    Kolomgegevens in dezelfde set bestanden colocate. Co-localiteit wordt gebruikt door Delta Lake-algoritmen voor het overslaan van gegevens om de hoeveelheid gegevens die moet worden gelezen aanzienlijk te verminderen. U kunt meerdere kolommen opgeven als ZORDER BY een door komma's gescheiden lijst. De effectiviteit van de lokaliteit daalt echter met elke extra kolom.

Voorbeelden

OPTIMIZE events

OPTIMIZE events WHERE date >= '2017-01-01'

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Zie Gegevensbestanden comprimeren met optimalisatie op Delta Lake voor meer informatie over de OPTIMIZE opdracht.