Sdílet prostřednictvím


VACUUM

Platí pro:zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Remove nepoužívané soubory z adresáře table.

Poznámka:

Tento příkaz funguje jinak v závislosti na tom, jestli pracujete s Delta nebo Apache Spark table.

Vacuum Delta table

Rekurzivně vacuum adresáře spojené s tableDeltou. Pro podrobné informace a omezení se podívejte na nepoužité datové soubory Remove s vacuum.

VACUUM odebere všechny soubory z adresáře table, které nespravuje Delta, a také datové soubory, které už nejsou v nejnovějším stavu transakčního protokolu pro table a jsou starší než prahová hodnota uchovávání. VACUUM přeskočí všechny adresáře, které začínají podtržítkem (_), který obsahuje _delta_logznak . Dělení table na column, které začíná podtržítkem, je výjimkou z tohoto pravidla; VACUUM prohledá všechny platné oddíly zahrnuté v cílovém Delta table. Rozdílové table datové soubory se odstraní podle času, kdy byly logicky odebrány z transakčního protokolu Delta, plus podle doby uchovávání, a nikoli podle časových razítek jejich úprav v úložném systému. Výchozí mezní hodnota je 7 dnů.

V tablesDelta Azure Databricks automaticky neaktivuje operace VACUUM.

Pokud spustíte VACUUM na Delta table, ztratíte možnost cestovat v čase zpět na verzi starší než zadaná doba uchovávání dat.

Upozorňující

Doporučujeme, abyste set interval uchovávání nejméně 7 dnů, protože staré snímky a nepotvrzené soubory mohou být stále používány souběžnými čtenáři nebo zapisovači do table. Pokud VACUUM vyčistí aktivní soubory, mohou souběžní čtenáři selhat nebo ještě horší, tables může být poškozen, když VACUUM odstraní soubory, které ještě nebyly potvrzeny. Je nutné zvolit interval, který je delší než nejdelší běh souběžné transakce a než nejdelší období, během kterého může jakýkoli datový proud zaostávat za nejnovějším mezi update a table.

Delta Lake má bezpečnostní kontrolu, abyste zabránili spuštění nebezpečného VACUUM příkazu. V prostředí Databricks Runtime jste si jisti, že na tomto table neproběhly žádné operace, které by trvalo déle než zadaný interval uchovávání informací, můžete tuto bezpečnostní kontrolu vypnout nastavením vlastnosti konfigurace Sparku na spark.databricks.delta.retentionDurationCheck.enabledfalse.

VACUUM table_name { { FULL | LITE } |  RETAIN num HOURS | DRY RUN } [...]

V Databricks Runtime 16.0 a starších musí RETAIN num HOURS předcházet DRY RUN v syntaxi.

Důležité

window uchovávání informací pro příkaz VACUUM je určena vlastností delta.deletedFileRetentionDurationtable, která má výchozí hodnotu 7 dnů. To znamená, že VACUUM odebere datové soubory, na které už v posledních 7 dnech neodkazuje verze delta table. Chcete-li uchovávat data po delší dobu, například umožnit delší časové cestování, nastavte set tento parametr table na vyšší hodnotu. Následující příklad ukazuje nastavení této prahové hodnoty na 30 dnů:

ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');

Parameters

  • table_name

    Identifikuje existující Delta table. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.

  • RETAIN num HOURS

    Prahová hodnota uchovávání.

  • DRY RUN

    Vrátí list až 1 000 souborů, které se mají odstranit.

  • FULL nebo LITE

    platí pro:zaškrtněte políčko Ano Databricks Runtime 16.1 a novější

    FULL spustí operaci vacuum v režimu úplného. Tím se odstraní datové soubory mimo dobu uchování a všechny soubory v adresáři table, na které tableneodkazuje .

    LITE spustí operaci vacuum v režimu Lite. Místo hledání všech souborů v adresáři table používá VACUUM protokol transakcí Delta k identifikaci a remove souborů, na které se už v době uchovávání neukazují žádné verze table. Pokud VACUUM LITE nelze dokončit, protože protokol Delta byl vyřazen, je vyvolána výjimka DELTA_CANNOT_VACUUM_LITE.

    Výchozí hodnota je FULL.

Vacuum ne-Delta table

Rekurzivně čistí adresáře spojené s nesouvislými table a nepotvrzenými remove soubory staršími než prahová hodnota uchování. Výchozí mezní hodnota je 7 dnů.

U nedelta tablesAzure Databricks automaticky aktivuje operace VACUUM při zápisu dat.

Syntaxe

VACUUM table_name [RETAIN num HOURS]

Parameters

  • table_name

    Identifikuje existující table podle názvu nebo cesty.

  • RETAIN num HOURS

    Prahová hodnota uchovávání.