VACUUM
Platí pro: Databricks SQL
Databricks Runtime
Odeberte nepoužívané soubory z adresáře tabulky.
Poznámka:
Tento příkaz funguje jinak v závislosti na tom, jestli pracujete na tabulce Delta nebo Apache Spark.
Vakuovat tabulku Delta
Rekurzivní vakuové adresáře přidružené k tabulce Delta. Úplné podrobnosti a omezení najdete v tématu Odebrání nepoužívaných datových souborů pomocí příkazu VACUUM.
VACUUM
odebere všechny soubory z adresáře tabulky, které nespravuje Delta, a také datové soubory, které už nejsou v nejnovějším stavu transakčního protokolu pro tabulku a jsou starší než prahová hodnota uchovávání informací.
VACUUM
přeskočí všechny adresáře, které začínají podtržítkem (_
), který obsahuje _delta_log
znak . Dělení tabulky na sloupec začínající podtržítkem je výjimkou tohoto pravidla; VACUUM
prohledá všechny platné oddíly zahrnuté v cílové tabulce Delta. Datové soubory tabulky Delta se odstraní podle času, kdy byly logicky odebrány z transakčního protokolu Delta plus doby uchovávání, nikoli časové razítka jejich úprav v systému úložiště. Výchozí mezní hodnota je 7 dnů.
V tabulkách Delta Azure Databricks automaticky neaktivuje operace VACUUM
.
Pokud spustíte VACUUM
v tabulce Delta, ztratíte možnost cestovat v čase zpět na verzi starší, než je zadaná doba uchovávání dat.
Upozorňující
Doporučujeme nastavit interval uchovávání nejméně 7 dní, protože staré snímky a neuložené soubory mohou být stále používány souběžnými čtenáři nebo zapisovači do tabulky. Pokud VACUUM
vyčistí aktivní soubory, souběžné čtenáře můžou selhat nebo horší, mohou být tabulky poškozeny, když VACUUM
odstraní soubory, které ještě nebyly potvrzeny. Je nutné zvolit interval, který je delší než nejdéle běžící souběžná transakce a než nejdelší doba, o kterou může jakýkoli datový proud zaostávat za nejnovější aktualizací tabulky.
Delta Lake má bezpečnostní kontrolu, abyste zabránili spuštění nebezpečného VACUUM
příkazu. V modulu Databricks Runtime jste si jisti, že v této tabulce nejsou provedeny žádné operace, které by trvalo déle, než je zadaný interval uchovávání informací, můžete tuto bezpečnostní kontrolu vypnout nastavením vlastnosti konfigurace Sparku spark.databricks.delta.retentionDurationCheck.enabled
na false
.
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é
Okno uchovávání informací pro příkaz VACUUM
je určeno vlastností tabulky delta.deletedFileRetentionDuration
, která má výchozí hodnotu 7 dnů.
To znamená, že VACUUM
odebere datové soubory, na které už v posledních 7 dnech neodkazuje verze tabulky Delta.
Chcete-li uchovávat data po delší dobu, například pro podporu delšího cestování v čase, nastavte tuto vlastnost tabulky 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');
Parametry
-
Identifikuje existující tabulku Delta. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.
RETAIN num HOURS
Prahová hodnota uchovávání.
DRY RUN
Vrátí seznam až 1 000 souborů, které se mají odstranit.
FULL
neboLITE
platí pro:
Databricks SQL
Databricks Runtime 16.1 a novější
FULL
spustí operaci vakua v režimu Full. Tím se odstraní datové soubory mimo dobu uchování a všechny soubory v adresáři tabulky, na které tabulka neodkazuje.LITE
spustí operaci vakua v režimu Lite. Místo vyhledání všech souborů v adresáři tabulekVACUUM
pomocí transakčního protokolu Delta identifikuje a odebere soubory, na které už v době uchování neodkazují žádné verze tabulek. PokudVACUUM 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
.
Vakuum tabulky, která není delta
Rekurzivně pročišťuje adresáře spojené s tabulkou typu non-Delta a odstraní nepotvrzené soubory starší než stanovená doba uchovávání. Výchozí mezní hodnota je 7 dnů.
V tabulkách, které nejsou delta, Azure Databricks automaticky aktivuje operace VACUUM
při zápisu dat.
Syntaxe
VACUUM table_name [RETAIN num HOURS]
Parametry
-
Identifikuje existující tabulku podle názvu nebo cesty.
RETAIN num HOURS
Prahová hodnota uchovávání.