Co jsou to vektory odstranění?
Vektory odstranění jsou funkce optimalizace úložiště, kterou můžete povolit u tabulek Delta Lake. Ve výchozím nastavení se při odstranění jednoho řádku v datovém souboru musí přepsat celý soubor Parquet obsahující záznam. S povolenými vektory odstranění pro tabulku, DELETE
, UPDATE
a MERGE
operace používají vektory odstranění k označení existujících řádků jako odebraných nebo změněných bez přepsání souboru Parquet. Následná čtení v tabulce řeší aktuální stav tabulky aplikací odstranění uvedených ve vektorech odstranění na nejnovější verzi tabulky.
Databricks doporučuje používat Databricks Runtime 14.3 LTS a vyšší k zápisu tabulek s vektory odstranění, aby bylo možné použít všechny optimalizace. Tabulky s povolenými vektory odstranění můžete číst v Databricks Runtime 12.2 LTS a novějších.
Ve verzích Databricks Runtime 14.2 a novějších podporují tabulky s mazacími vektory souběžnost na úrovni řádků. Viz Konflikty zápisu se souběžností na úrovni řádků.
Poznámka:
Photon využívá vektory odstranění pro prediktivní vstupně-výstupní aktualizace, urychlení DELETE
MERGE
a UPDATE
operace. Všichni klienti, kteří podporují čtení vektorů odstraňování, mohou číst aktualizace, které vytvořily vektory odstranění, bez ohledu na to, zda prediktivní vstupně-výstupní operace tyto aktualizace vytvořily. Viz Použití prediktivních vstupně-výstupních operací ke zrychlení aktualizací.
Povolení vektorů odstranění
Důležité
Nastavení správce pracovního prostoru určuje, jestli jsou vektory odstranění pro nové tabulky Delta povolené automaticky. Viz automatické povolení vektorů odstranění.
Pokud se používá nastavení pracovního prostoru pro automatické povolení vektorů odstranění, pak se na základě vybrané možnosti pro typy tabulek tyto vektory implicitně povolí při vytváření nové tabulky pomocí SQL Warehouse nebo Databricks Runtime 14.1 či vyšší. Vektory odstranění jsou nejsou ve výchozím nastavení povoleny při vytváření materializovaných zobrazení nebo tabulek streamování a musí být při vytváření materializovaného zobrazení nebo tabulky Streamování povoleny ručně.
Pokud chcete ručně povolit podporu vektorů odstranění v tabulce nebo zobrazení, použijte vlastnost delta.enableDeletionVectors
tabulky. Při vytváření nebo změně tabulky můžete ručně povolit vektory odstranění v tabulce delta. Vektory odstranění můžete ručně povolit v materializovaném zobrazení nebo v tabulce Streamování pouze při vytváření materializovaného zobrazení nebo tabulky Streamování. Příkaz ALTER
nelze použít k povolení vektorů odstranění v materializovaném zobrazení nebo v tabulce Streamování.
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Upozorňující
Když povolíte vektory odstranění, protokol tabulky se upgraduje. Po upgradu nebude tabulka čitelná klienty Delta Lake, kteří nepodporují vektory odstranění. Viz Jak Azure Databricks spravuje kompatibilitu funkcí Delta Lake?.
V Databricks Runtime 14.1 a novější můžete zrušit funkci tabulky pro mazací vektory, což umožní kompatibilitu s jinými klienty Delta. Viz Funkce tabulky Drop Delta.
Použití změn u datových souborů Parquet
Vektory odstranění označují změny řádků jako softwarově označené odstranění, které logicky mění existující datové soubory Parquet v tabulce Delta Lake. Tyto změny se použijí fyzicky, když jedna z následujících událostí způsobí přepsání datových souborů:
- V tabulce se spustí příkaz
OPTIMIZE
. - Automatické komprimace aktivuje přepsání datového souboru vektorem odstranění.
-
REORG TABLE ... APPLY (PURGE)
se spouští proti tabulce.
Události související s komprimací souborů nemají přísné záruky pro řešení změn zaznamenaných ve vektorech odstranění a některé změny zaznamenané ve vektorech odstranění nemusí být použity, pokud cílové datové soubory jinak nebudou kandidáty na komprimace souborů.
REORG TABLE ... APPLY (PURGE)
přepíše všechny datové soubory obsahující záznamy s úpravami zaznamenanými pomocí vektorů odstranění. Viz REORG TABLE.
Poznámka:
Změněná data můžou stále existovat ve starých souborech. Ke fyzickému odstranění starých souborů můžete spustit VACUUM.
REORG TABLE ... APPLY (PURGE)
po dokončení vytvoří novou verzi tabulky. Tato doba dokončení je časové razítko, které musíte zvážit pro hranici uchovávání, aby vaše operace VACUUM
mohla zcela odstranit smazané soubory. Viz Odeberte nepoužívané datové soubory pomocí příkazu vacuum.
Kompatibilita s klienty Delta
Azure Databricks používá vektory odstranění k výkonu prediktivních vstupně-výstupních operací pro aktualizace výpočetních prostředků s podporou Photon. Viz Použití prediktivních vstupně-výstupních operací ke zrychlení aktualizací.
Podpora použití vektorů odstranění pro čtení a zápisy se liší podle klienta.
Následující tabulka označuje požadované verze klienta pro čtení a zápis tabulek Delta s povolenými vektory odstranění a určuje, které operace zápisu používají vektory odstranění:
Klient | Zápis vektorů odstranění | Čtení vektorů odstranění |
---|---|---|
Databricks Runtime s Photon | Podporuje MERGE a UPDATE DELETE používá Databricks Runtime 12.2 LTS a vyšší. |
Vyžaduje Databricks Runtime 12.2 LTS nebo vyšší. |
Databricks Runtime bez Photonu | Podporuje DELETE použití Databricks Runtime 12.2 LTS a vyšší. Podporuje UPDATE použití Databricks Runtime 14.1 a novějších. Podporuje MERGE použití Databricks Runtime 14.3 LTS a vyšší. |
Vyžaduje Databricks Runtime 12.2 LTS nebo vyšší. |
OSS Apache Spark s OSS Delta Lake | Podporuje DELETE použití OSS Delta 2.4.0 a vyšší. Podporuje UPDATE použití OSS Delta 3.0.0 a vyšší. |
Vyžaduje OSS Delta 2.3.0 nebo vyšší. |
Příjemci Delta Sharing | Zápisy nejsou podporovány v tabulkách Delta Sharing. | Databricks: Vyžaduje DBR 14.1 nebo vyšší. Open source Apache Spark: Vyžaduje delta-sharing-spark verzi 3.1 nebo vyšší. |
Poznámka:
Podporu pro ostatní klienty Delta najdete v dokumentaci k integraci s OSS Delta Lake.
Omezení
- UniForm nepodporuje vektory odstranění.
- Příkaz GENERATE nelze použít k vygenerování souboru manifestu pro tabulku, která využívá soubory s vektory odstranění. Chcete-li vygenerovat manifest, nejprve spusťte REORG TABLE ... Příkaz APPLY (PURGE) a pak spusťte příkaz
GENERATE
. Při odesílání příkazu je nutné zajistit, aby nebyly spuštěny žádné souběžné operace zápisuREORG
. - Nelze přírůstkově generovat soubory manifestu pro tabulku s povolenými vektory odstranění (například nastavením vlastnosti tabulky
delta.compatibility.symlinkFormatManifest.enabled=true
). - Pokud povolíte vektory odstranění v materializovaném zobrazení nebo streamované tabulce a následně zakážete vektory odstranění, budoucí zápisy do zobrazení nebo tabulky nebudou moci využít vektory odstranění, ale stávající vektory odstranění se neodeberou.
- Po povolení vektorů odstranění v materializovaném zobrazení nebo streamující tabulce nemůžete snížit verzi protokolu tabulky. Po povolení nelze funkci tabulky pro vektory odstranění odebrat, a to ani v případě, že následně zakážete vektory odstranění v zobrazení nebo tabulce.
- Nelze spustit
REORG
v materializovaných zobrazeních nebo streamovaných tabulkách k potvrzení změn zaznamenaných ve vektorech odstranění do datových souborů Parquet, které tyto objekty zálohují. Kvůli tomuto omezení nepovolujte vektory odstranění v materializovaných zobrazeních nebo tabulkách streamování, pokud musíte zaručit úplné odstranění záznamů (například v případě dodržování GDPR nebo Zákona o ochraně soukromí spotřebitelů v Kalifornii).