Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Verwijder gegevensbestanden waarnaar niet meer wordt verwezen door een tabel die ouder is dan de bewaardrempel door de VACUUM opdracht in de tabel uit te voeren. Regelmatig uitvoeren VACUUM is belangrijk voor kosten en naleving vanwege de volgende overwegingen:
- Het verwijderen van ongebruikte gegevensbestanden vermindert de kosten voor cloudopslag.
- Gegevensbestanden die zijn verwijderd door
VACUUM, kunnen records bevatten die zijn gewijzigd of verwijderd. Als u deze bestanden permanent verwijdert uit de cloudopslag, zorgt u ervoor dat deze records niet meer toegankelijk zijn.
Op tabellen waarvoor Iceberg-leesbewerkingen (UniForm) zijn ingeschakeld, VACUUM worden ook onbereikbare Iceberg-metagegevensbestanden opgeschoond. Zie VACUUM en Iceberg-metagegevens opschonen.
Voorspellende optimalisatie voert automatisch VACUUM uit op beheerde tabellen van Unity Catalog. Databricks raadt aan voorspellende optimalisaties in te schakelen voor alle beheerde Tabellen in Unity Catalog om het onderhoud van gegevens te vereenvoudigen en de opslagkosten te verlagen. Zie Voorspellende optimalisatie voor beheerde tabellen in Unity Catalog.
Kanttekeningen voor vacuüm
De standaardretentiedrempel voor gegevensbestanden na uitvoering VACUUM is 7 dagen. Zie Gegevensretentie configureren voor tijdreisquery's om dit gedrag te wijzigen.
VACUUM kan lege mappen achterblijven nadat alle bestanden erin zijn verwijderd. Volgende VACUUM bewerkingen verwijderen deze lege mappen.
Sommige tabelfuncties, zoals verwijderingsvectoren, gebruiken metagegevensbestanden om gegevens te markeren als verwijderd in plaats van gegevensbestanden opnieuw te schrijven. Gebruik REORG TABLE ... APPLY (PURGE) dit om deze verwijderingen vast te leggen en gegevensbestanden opnieuw te schrijven. Zie Alleen verwijderen van metagegevens opschonen om het herschrijven van gegevens af te dwingen.
Important
- In Databricks Runtime 13.3 LTS en hoger
VACUUMverschillen semantiek voor ondiepe klonen met beheerde Unity Catalog-tabellen van andere tabellen. Zie GebruikVACUUMmet Unity Catalog voor ondiepe klonen. -
VACUUMverwijdert alle bestanden uit mappen die niet worden beheerd door Azure Databricks, waarbij directory's worden genegeerd die beginnen met_of.. Als u extra metagegevens, zoals Structured Streaming-controlepunten in een tabelmap, opslaat, gebruikt u een mapnaam zoals_checkpoints.- Gegevens voor wijzigingsgegevensfeed worden beheerd in de
_change_datamap en verwijderd metVACUUM. Zie Wijzigingenfeed gebruiken voor Azure Databricks. - Bloom filter-indexen (verouderd) maken gebruik van de
_delta_indexdirectory.VACUUMHiermee worden bestanden in deze map opgeschoond. Zie Bloom-filterindexen (verouderd).
- Gegevens voor wijzigingsgegevensfeed worden beheerd in de
- De mogelijkheid om een query uit te voeren op tabelversies die ouder zijn dan de bewaarperiode, gaat verloren nadat
VACUUMis uitgevoerd. - Logboekbestanden worden automatisch en asynchroon verwijderd na controlepuntbewerkingen en vallen niet onder
VACUUM. Hoewel de standaardretentieperiode van logboekbestanden 30 dagen is, worden metVACUUMin een tabel de gegevensbestanden verwijderd die nodig zijn voor tijdreizen. - Wanneer schijfcaching is ingeschakeld, kan een cluster gegevens bevatten uit Parquet-bestanden die zijn verwijderd met
VACUUM. Daarom is het mogelijk om query's uit te voeren op de gegevens van eerdere tabelversies waarvan de bestanden zijn verwijderd. Als u het cluster opnieuw opstart, worden de gegevens in de cache verwijderd. Zie De schijfcache configureren.
Voorbeeldsyntaxis voor vacuüm
Als u bestanden wilt verwijderen die niet langer nodig zijn voor versies die ouder zijn dan de standaardbewaarperiode, voert u VACUUM uit zonder aanvullende configuraties:
VACUUM table_name
Als u een voorbeeld wilt bekijken van de lijst met bestanden die moeten worden verwijderd zonder ze te verwijderen, voert u het volgende uit VACUUMDRY RUN:
VACUUM table_name DRY RUN
Zie VACUUMvoor details van spark SQL-syntaxis.
Zie de documentatie van de Delta Lake-API voor Scala, Java en Python syntaxis.
Note
Gebruik in Databricks Runtime 18.0 en hoger de tabeleigenschap om de deletedFileRetentionDuration retentie te beheren. Voor beheerde tabellen van Unity Catalog is dit van toepassing op Databricks Runtime 13.3 LTS en hoger.
Volledige modus versus lite-modus
Important
Deze functie bevindt zich in openbare preview in Databricks Runtime 16.4 LTS en hoger.
Als u de prestaties wilt verbeteren en de kosten wilt verlagen door te voorkomen dat alle bestanden in de tabelmap worden vermeld, geeft u het LITE trefwoord in uw vacuüminstructie op om een alternatieve modus van VACUUMte activeren. Dit is handig voor grote tabellen waarvoor frequente VACUUM bewerkingen nodig zijn.
LITE in de modus wordt het transactielogboek gebruikt om gegevensbestanden te identificeren die zich niet meer binnen de VACUUM retentiedrempel bevinden en worden deze gegevensbestanden uit de tabel verwijderd.
Note
Als u VACUUM uitvoert in LITE modus, worden geen bestanden verwijderd waarnaar niet in het transactielogboek wordt verwezen. Bijvoorbeeld bestanden die zijn gemaakt door een afgebroken transactie.
Gebruik de volgende syntaxis voor VACUUM in de modus LITE:
VACUUM table_name LITE
FULL is de standaardmodus voor vacuüm. U kunt de volledige modus expliciet uitvoeren met de volgende opdracht:
VACUUM table_name FULL
Zie VACUUM.
Requirements
LITE modus heeft de volgende vereiste:
- U moet ten minste één geslaagde
VACUUMbewerking hebben uitgevoerd binnen de geconfigureerde bewaardrempel voor transactielogboeken (standaard 30 dagen).
Als niet aan deze vereiste wordt voldaan, wordt het volgende foutbericht weergegeven wanneer u probeert uit te voeren VACUUM in LITE de modus. Als u wilt doorgaan, moet u VACUUM uitvoeren in FULL modus.
VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the log. Please run VACUUM FULL.
Verwijderen van metagegevens die alleen worden verwijderd om het herschrijven van gegevens af te dwingen
De REORG TABLE opdracht met de APPLY (PURGE) syntaxis stelt u in staat gegevens te herschrijven om zachte verwijderingen toe te passen. Met voorlopig verwijderen worden geen gegevens herschreven of gegevensbestanden verwijderd, maar worden metagegevensbestanden gebruikt om aan te geven dat sommige gegevenswaarden zijn gewijzigd. Zie REORG TABLE.
Bewerkingen die zachte verwijderingen uitvoeren, zijn de volgende:
- Kolommen verwijderen met kolomtoewijzing ingeschakeld.
- Alle gegevenswijzigingen waarvoor verwijderingsvectoren zijn ingeschakeld.
Als voorlopig verwijderen is ingeschakeld, blijven oude gegevens mogelijk fysiek aanwezig in de huidige bestanden van de tabel, zelfs nadat de gegevens zijn verwijderd of bijgewerkt. Voer de volgende stappen uit om deze gegevens fysiek uit de tabel te verwijderen:
- Voer
REORG TABLE ... APPLY (PURGE)uit. Hierna zijn de oude gegevens niet meer aanwezig in de huidige bestanden van de tabel, maar deze zijn nog steeds aanwezig in de oudere bestanden die worden gebruikt voor tijdreizen. - Voer uit
VACUUMom deze oudere bestanden te verwijderen.
REORG TABLE maakt een nieuwe versie van de tabel wanneer de bewerking is voltooid. Alle tabelversies in de geschiedenis vóór deze transactie verwijzen naar oudere gegevensbestanden. Conceptueel gezien is dit vergelijkbaar met de opdracht OPTIMIZE, waarbij gegevensbestanden opnieuw worden geschreven, ook al blijven gegevens in de huidige tabelversie consistent.
Important
Gegevensbestanden worden alleen verwijderd wanneer de bestanden zijn verlopen volgens de VACUUM bewaarperiode. Dit betekent dat de VACUUM met vertraging na de REORG moet worden uitgevoerd om te garanderen dat de oudere bestanden zijn vervallen. De bewaarperiode van VACUUM kan worden beperkt om de vereiste wachttijd te verkorten, met als gevolg een vermindering van de maximale historie die wordt bewaard.
Aanbevelingen voor clustergrootte voor vacuüm
Houd er rekening mee dat de bewerking in twee fasen plaatsvindt om de juiste clustergrootte te VACUUMselecteren:
- De taak begint met het gebruik van alle beschikbare uitvoerknooppunten om bestanden in de bronmap parallel weer te geven. De taak vergelijkt deze lijst met alle bestanden waarnaar momenteel wordt verwezen in het transactielogboek om bestanden te identificeren voor verwijdering. De bestuurder zit inactief gedurende deze tijd.
- Het stuurprogramma geeft verwijderingsopdrachten uit voor elk bestand dat is geïdentificeerd voor verwijdering. Omdat het verwijderen van bestanden een bewerking alleen voor stuurprogramma's is, vinden alle bewerkingen plaats in één knooppunt terwijl de werkknooppunten inactief zijn.
Om kosten en prestaties te optimaliseren, raadt Databricks het volgende aan, met name voor langdurige vacuümtaken:
- Voer de vacuumfunctie uit op een cluster met auto-scaling ingesteld op 1-4 werknodes, waarbij elke werknode 8 kernen heeft.
- Selecteer een stuurprogramma met tussen 8 en 32 kernen. Vergroot de grootte van de driver om geheugenfouten (OOM) te voorkomen.
Als VACUUM bewerkingen regelmatig meer dan 10 duizend bestanden verwijderen of meer dan 30 minuten verwerkingstijd in beslag nemen, kunt u de grootte van het stuurprogramma of het aantal werknemers verhogen.
Als u merkt dat de vertraging optreedt tijdens het identificeren van bestanden die moeten worden verwijderd, voegt u meer werkknooppunten toe. Als de vertraging optreedt tijdens het uitvoeren van verwijderopdrachten, kunt u proberen de grootte van het stuurprogramma te vergroten.
Aanbevolen vacuümfrequentie
Databricks raadt aan regelmatig VACUUM uit te voeren op alle tabellen om overtollige cloudgegevensopslagkosten te verlagen. De standaardretentiedrempel voor vacuüm is 7 dagen. Als u een hogere drempelwaarde instelt, krijgt u toegang tot een grotere geschiedenis voor uw tabel, maar verhoogt u het aantal opgeslagen gegevensbestanden en verhoogt u daardoor de opslagkosten van uw cloudprovider.
Drempelwaarden voor vacuüm en lage retentie
Warning
Databricks raadt ten zeerste aan om een bewaarperiode van ten minste 7 dagen in te stellen. Als u taken hebt die enkele dagen worden uitgevoerd, kunnen langlopende taken bestanden schrijven die nog niet zijn vastgelegd. Als uw bewaarperiode te kort is, VACUUM kunt u deze niet-doorgevoerde bestanden verwijderen voordat de taak is voltooid.
Er is een veiligheidscontrole om te voorkomen dat u een gevaarlijke VACUUM opdracht uitvoert. Als u zeker weet dat er geen bewerkingen worden uitgevoerd in deze tabel die langer duren dan het retentieinterval dat u wilt opgeven, schakelt u deze veiligheidscontrole uit door de retentionDurationCheck Spark-configuratie in te stellen op false:
Delta
SET spark.databricks.delta.retentionDurationCheck.enabled = false
Iceberg
SET spark.databricks.iceberg.retentionDurationCheck.enabled = false
Controlegegevens
VACUUM zorgt ervoor dat controlegegevens worden doorgevoerd in het transactielogboek. Voer een query uit op de controlegebeurtenissen met behulp van DESCRIBE HISTORY.
Auditlogboekregistratie is standaard ingeschakeld op alle platforms voor beheerde tabellen in Unity Catalog. Controlelogboekregistratie voor vacuümcontrole beheren met de vacuum.logging Spark-configuratie:
Delta
SET spark.databricks.delta.vacuum.logging.enabled = true
Iceberg
SET spark.databricks.iceberg.vacuum.logging.enabled = true
Als u deze configuratie voor een hele werkruimte wilt toepassen, gebruikt u een clusterbeleid en voegt u het volgende toe aan de beleids-JSON:
Delta
{
"spark_conf.spark.databricks.delta.vacuum.logging.enabled": {
"type": "fixed",
"value": "true"
}
}
Iceberg
{
"spark_conf.spark.databricks.iceberg.vacuum.logging.enabled": {
"type": "fixed",
"value": "true"
}
}
Zie Rekenbeleid maken en beheren.
Note
Auditlogboekregistratie is ook standaard ingeschakeld voor externe tabellen.