OPTIMIZE
Van toepassing op: Databricks SQL Databricks Runtime
Optimaliseert de indeling van Delta Lake-gegevens. U kunt desgewenst een subset van gegevens of collocate gegevens per kolom optimaliseren. Als u geen collocatie opgeeft en de tabel niet is gedefinieerd met vloeistofclustering, wordt optimalisatie van bin-verpakking uitgevoerd.
Syntaxis
OPTIMIZE table_name [FULL] [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-configuratie spark.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 of optiesspecificatie bevatten.
FULL
Van toepassing op: Databricks Runtime 16.0 en hoger
Optimaliseer de hele tabel, inclusief gegevens die mogelijk eerder zijn geclusterd. Deze component kan alleen worden opgegeven voor tabellen die gebruikmaken van liquide clustering.
WHERE
Optimaliseer de subset van rijen die overeenkomen met het opgegeven partitiepredicaat. Alleen filters met betrekking tot partitiesleutelkenmerken worden ondersteund.
U kunt deze component niet gebruiken voor tabellen die gebruikmaken van liquide clustering.
ZORDER BY
Kolomgegevens in dezelfde set bestanden samenvoegen. 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 neemt echter af met elke extra kolom.U kunt deze component niet gebruiken voor tabellen die gebruikmaken van liquide clustering.
Voorbeelden
> OPTIMIZE events;
> OPTIMZIE events FULL;
> OPTIMIZE events WHERE date >= '2017-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Zie De indeling van gegevensbestanden optimaliseren voor meer informatie over de OPTIMIZE
opdracht.