Udostępnij za pośrednictwem


Co to są wektory usuwania?

Wektory usuwania to funkcja optymalizacji magazynu, którą można włączyć w tabelach usługi Delta Lake. Domyślnie po usunięciu pojedynczego wiersza w pliku danych cały plik Parquet zawierający rekord musi zostać zapisany ponownie. W przypadku włączenia wektorów usuwania dla tabeli operacje DELETE, UPDATEi MERGE używają wektorów usuwania do oznaczania istniejących wierszy jako usuniętych lub zmienionych bez ponownego zapisywania pliku Parquet. Kolejne operacje odczytu w tabeli rozpoznają bieżący stan tabeli, stosując usunięcia wskazane przez wektory usuwania do najnowszej wersji tabeli.

Usługa Databricks zaleca używanie środowiska Databricks Runtime 14.3 LTS lub nowszego do zapisywania tabel z wektorami usuwania w celu korzystania ze wszystkich optymalizacji. Tabele można odczytywać z wektorami usuwania włączonymi w środowisku Databricks Runtime 12.2 LTS lub nowszym.

W środowisku Databricks Runtime 14.2 lub nowszym tabele z wektorami usuwania obsługują współbieżność na poziomie wiersza. Zobacz Konflikty zapisu ze współbieżnością na poziomie wiersza.

Uwaga

Photon wykorzystuje wektory usuwania na potrzeby predykcyjnych aktualizacji we/wy, przyspieszając DELETEoperacje , MERGEi UPDATE . Wszyscy klienci obsługujący wektory usuwania odczytu mogą odczytywać aktualizacje, które wygenerowały wektory usuwania, niezależnie od tego, czy predykcyjne operacje we/wy wygenerowały te aktualizacje. Zobacz Przyspieszanie aktualizacji przy użyciu predykcyjnego we/wy.

Włączanie wektorów usuwania

Ważne

Ustawienie administratora obszaru roboczego określa, czy wektory usuwania są automatycznie włączone dla nowych tabel delty. Zobacz Automatyczne włączanie wektorów usuwania.

Jeśli jest używane ustawienie obszaru roboczego do kontrolowania automatycznego włączania wektorów usuwania, na podstawie opcji wybranej dla typów tabel wektory usuwania są domyślnie włączone podczas tworzenia nowej tabeli przy użyciu usługi SQL Warehouse lub Databricks Runtime 14.1 lub nowszej. Wektory usuwania niedomyślnie włączone podczas tworzenia zmaterializowanych widoków lub tabel przesyłania strumieniowego i muszą być ręcznie włączone podczas tworzenia zmaterializowanego widoku lub tabeli przesyłania strumieniowego.

Aby ręcznie włączyć obsługę wektorów usuwania w tabeli lub widoku, użyj delta.enableDeletionVectors właściwości tabeli. Można ręcznie włączyć wektory usuwania w tabeli delty podczas tworzenia lub zmieniania tabeli. Można ręcznie włączyć wektory usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego tylko podczas tworzenia zmaterializowanego widoku lub tabeli przesyłania strumieniowego. Nie można użyć instrukcji ALTER , aby włączyć wektory usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego.

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Ostrzeżenie

Po włączeniu wektorów usuwania protokół tabeli zostanie uaktualniony. Po uaktualnieniu tabela nie będzie czytelna dla klientów usługi Delta Lake, którzy nie obsługują wektorów usuwania. Zobacz artykuł Jak usługa Azure Databricks zarządza zgodnością funkcji usługi Delta Lake?.

W środowisku Databricks Runtime 14.1 lub nowszym można usunąć funkcję tabeli wektorów usuwania, aby umożliwić zgodność z innymi klientami delty. Zobacz Usuwanie funkcji tabeli delty.

Stosowanie zmian w plikach danych Parquet

Wektory usuwania wskazują zmiany wierszy jako usunięcia nietrwałe, które logicznie modyfikują istniejące pliki danych Parquet w tabeli usługi Delta Lake. Te zmiany są stosowane fizycznie, gdy jedno z następujących zdarzeń powoduje ponowne napisanie plików danych:

  • Polecenie OPTIMIZE jest uruchamiane w tabeli.
  • Automatyczne kompaktowanie wyzwala ponowne zapisywanie pliku danych z wektorem usuwania.
  • REORG TABLE ... APPLY (PURGE) polecenie jest uruchamiane względem tabeli.

Zdarzenia związane z kompaktowaniem plików nie mają ścisłych gwarancji rozpoznawania zmian zarejestrowanych w wektorach usuwania, a niektóre zmiany zarejestrowane w wektorach usuwania mogą nie być stosowane, jeśli docelowe pliki danych nie byłyby w przeciwnym razie kandydatami do kompaktowania plików. REORG TABLE ... APPLY (PURGE) Ponownie zapisuje wszystkie pliki danych zawierające rekordy z modyfikacjami zarejestrowanymi przy użyciu wektorów usuwania. Zobacz REORG TABLE (TABELA REORG).

Uwaga

Zmodyfikowane dane mogą nadal istnieć w starych plikach. Możesz uruchomić polecenie VACUUM , aby fizycznie usunąć stare pliki. REORG TABLE ... APPLY (PURGE) tworzy nową wersję tabeli po jej zakończeniu. Ten czas ukończenia to sygnatura czasowa, którą należy wziąć pod uwagę, aby próg VACUUM przechowywania operacji w pełni usunąć usunięte pliki. Zobacz Usuwanie nieużywanych plików danych z próżnią.

Zgodność z klientami usługi Delta

Usługa Azure Databricks używa wektorów usuwania do zasilania predykcyjnego we/wy na potrzeby aktualizacji zasobów obliczeniowych z włączoną usługą Photon. Zobacz Przyspieszanie aktualizacji przy użyciu predykcyjnego we/wy.

Obsługa używania wektorów usuwania dla operacji odczytu i zapisu różni się w zależności od klienta.

W poniższej tabeli przedstawiono wymagane wersje klienta do odczytywania i zapisywania tabel różnicowych z włączonymi wektorami usuwania i określa, które operacje zapisu używają wektorów usuwania:

Klient Zapis wektorów usuwania Odczytywanie wektorów usuwania
Środowisko uruchomieniowe usługi Databricks z aplikacją Photon Obsługuje MERGEsystem , UPDATEi DELETE przy użyciu środowiska Databricks Runtime 12.2 LTS i nowszych wersji. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
Środowisko uruchomieniowe usługi Databricks bez usługi Photon Obsługuje DELETE używanie środowiska Databricks Runtime 12.2 LTS lub nowszego. Obsługuje UPDATE korzystanie z środowiska Databricks Runtime w wersji 14.1 lub nowszej. Obsługuje MERGE używanie środowiska Databricks Runtime 14.3 LTS lub nowszego. Wymaga środowiska Databricks Runtime 12.2 LTS lub nowszego.
System operacyjny Apache Spark z usługą Delta Lake systemu operacyjnego Obsługuje DELETE używanie funkcji delta systemu operacyjnego 2.4.0 i nowszych. Obsługuje UPDATE używanie funkcji delta systemu operacyjnego 3.0.0 i nowszych. Wymaga różnicy systemu operacyjnego 2.3.0 lub nowszej.
Adresaci udostępniania różnicowego Zapisy nie są obsługiwane w tabelach udostępniania różnicowego Databricks: wymaga DBR 14.1 lub nowszego. Platforma Apache Spark typu open source: wymaga delta-sharing-spark wersji 3.1 lub nowszej.

Uwaga

Aby uzyskać pomoc techniczną dotyczącą innych klientów usługi Delta, zobacz dokumentację integracji usługi Delta Lake systemu operacyjnego.

Ograniczenia

  • Aplikacja UniForm nie obsługuje wektorów usuwania.
  • Nie można użyć instrukcji GENERATE do wygenerowania pliku manifestu dla tabeli zawierającej pliki korzystające z wektorów usuwania. Aby wygenerować manifest, najpierw uruchom tabelę REORG ... INSTRUKCJA APPLY (PURGE), a następnie uruchom instrukcję GENERATE . Podczas przesyłania instrukcji należy upewnić się, że podczas przesyłania instrukcji REORG nie są uruchomione żadne operacje zapisu współbieżnego.
  • Nie można przyrostowo wygenerować plików manifestu dla tabeli z włączonymi wektorami usuwania (na przykład przez ustawienie właściwości delta.compatibility.symlinkFormatManifest.enabled=truetabeli ).
  • Jeśli włączysz wektory usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego, a następnie wyłączysz wektory usuwania, przyszłe zapisy w widoku lub tabeli nie będą mogły korzystać z wektorów usuwania, ale istniejące wektory usuwania nie zostaną usunięte.
  • Nie można obniżyć poziomu protokołu tabeli po włączeniu wektorów usuwania w zmaterializowanym widoku lub tabeli przesyłania strumieniowego. Po włączeniu funkcji tabeli dla wektorów usuwania nie można usunąć, nawet jeśli później wyłączysz wektory usuwania w widoku lub tabeli.
  • Nie można uruchomić REORG na zmaterializowanych widokach lub tabelach przesyłania strumieniowego w celu zatwierdzenia zmian zarejestrowanych w wektorach usuwania do plików danych Parquet, które są kopiami zapasowymi tych obiektów. Ze względu na to ograniczenie nie należy włączać wektorów usuwania w zmaterializowanych widokach lub tabelach przesyłania strumieniowego, jeśli musisz zagwarantować pełne usunięcie rekordów (na przykład w przypadku zgodności z RODO lub KODA).