OPTIMIZE
Van toepassing op: Databricks SQL 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
-
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.