Delen via


OPTIMIZE

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan 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.maxFileSizein 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 of optiesspecificatie bevatten.

  • FULL

    Van toepassing op: vinkje als ja aan 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.