Co jsou to vektory odstranění?
Vektory odstranění jsou funkce optimalizace úložiště, které se dají povolit v tabulkách 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. Pokud jsou u tabulky povolené vektory odstranění, 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í tabulky přeloží aktuální stav tabulky tak, že se na nejnovější verzi tabulky aplikují vymazání zaznamenaná vektory odstranění.
Databricks doporučuje používat Databricks Runtime 14.3 LTS a vyšší k zápisu tabulek s vektory odstranění, aby bylo možné využít všechny optimalizace. Tabulky s povolenými vektory odstranění můžete číst v Databricks Runtime 12.2 LTS a novějších.
V Databricks Runtime 14.2 a novějších tabulkách s vektory odstranění podporují 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ů odstranění, mohou číst aktualizace, které vytvořily vektory odstranění, bez ohledu na to, jestli byly tyto aktualizace vytvořeny prediktivními vstupně-výstupními operacemi. Viz Použití prediktivních vstupně-výstupních operací ke zrychlení aktualizací.
Povolení vektorů odstranění
Vektory odstranění jsou ve výchozím nastavení povoleny při vytváření nové tabulky pomocí SQL Warehouse nebo Databricks Runtime 14.1 nebo vyšší.
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í.
Podporu vektorů odstranění v tabulce Delta můžete povolit nastavením vlastnosti tabulky Delta Lake. Při vytváření tabulky nebo úpravě existující tabulky povolíte vektory odstranění, jak je znázorněno v následujících příkladech:
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í. Podívejte se, jak Azure Databricks spravuje kompatibilitu funkcí Delta Lake?
Ve službě Databricks Runtime 14.1 a novějších můžete funkci tabulky vektorů odstranění odstranit, abyste umožnili kompatibilitu s ostatní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 obnovitelné odstranění, které logicky upravují existující datové soubory Parquet v tabulce Delta Lake. Tyto změny se použijí fyzicky při přepsání datových souborů, které se aktivují jednou z následujících událostí:
- V
OPTIMIZE
tabulce se spustí příkaz. - Automatické komprimace aktivuje přepsání datového souboru vektorem odstranění.
REORG TABLE ... APPLY (PURGE)
aplikace je spuštěna 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 TABULKA REORG.
Poznámka:
Změněná data můžou stále existovat ve starých souborech. Pomocí funkce VAKUA můžete fyzicky odstranit staré soubory. REORG TABLE ... APPLY (PURGE)
vytvoří novou verzi tabulky v době, kdy se dokončí, což je časové razítko, které je nutné zvážit, aby vaše VACUUM
operace plně odebrala odstraněné soubory. Viz Odebrání nepoužívaných datových souborů pomocí vakua.
Kompatibilita s klienty Delta
Azure Databricks využí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 využ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 využí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 rozdílového sdílení | Zápisy nejsou podporovány v tabulkách rozdílového sdílení. | 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 v jiných klientech Delta najdete v dokumentaci k integraci s OSS Delta Lake.
Omezení
- UniForm nepodporuje vektory odstranění.
- Můžete povolit vektory odstranění pro materializovaná zobrazení, ale pokud chcete zakázat vektory odstranění pro materializované zobrazení, musíte odstranit materializované zobrazení a znovu ho vytvořit.
- Nelze vygenerovat soubor manifestu pro tabulku s přítomnými vektory odstranění. Pokud chcete vygenerovat manifest, spusťte
REORG TABLE ... APPLY (PURGE)
a ujistěte se, že nejsou spuštěné žádné souběžné operace zápisu. - Soubory manifestu nelze přírůstkově generovat pro tabulku s povolenými vektory odstranění.