Tabele Delta VACUUM

Użyj polecenia usługi Delta Lake VACUUM , aby trwale usunąć pliki danych, do których nie odwołują się już tabele delty i które są starsze niż próg przechowywania.

W Fabric VACUUM pomaga usuwać przestarzałe pliki w OneLake po aktualizacjach, usuwaniach, scalaniu i operacjach kompaktowania. Zmniejsza wykorzystanie pamięci masowej, usuwa przestarzałe pliki, których Fabric nie potrzebuje już do utrzymania bieżącego stanu tabeli, i zwalnia miejsce po operacjach konserwacyjnych, takich jak OPTIMIZE.

VACUUM opiera się na tych samych podstawowych koncepcjach Delta Lake, które możesz znać z rozwiązania Delta Lake typu open source, ale uruchamiasz go w środowiskach Spark usługi Fabric, takich jak notatniki, definicje zadań Spark i interfejs użytkownika Lakehouse Maintenance.

Co usuwa próżnia

Tabela Delta rejestruje pliki, które składają się na bieżący stan tabeli w dzienniku Delta. Gdy operacje, takie jak UPDATE, DELETE, MERGE, zapisy nadpisujące lub kompakcja zastępują starsze pliki Parquet nowszymi, stare pliki mogą przestać być referencjonowane.

VACUUM Usuwa te nieużywane pliki tylko wtedy, gdy oba te warunki są spełnione:

  • Pliki nie są już uwzględniane w dzienniku Delta.
  • Pliki są starsze niż skonfigurowany próg przechowywania.

Ponieważ VACUUM trwale usuwa pliki z usługi OneLake, należy używać go ostrożnie, gdy nadal potrzebujesz starszych wersji tabeli.

Dlaczego próżnia ma znaczenie

Uruchom polecenie VACUUM, gdy chcesz:

  • Zmniejszenie kosztów magazynowania przez usunięcie przestarzałych plików z usługi OneLake
  • Odzyskiwanie miejsca po zaktualizowaniu, usunięciu i operacjach scalania
  • Czyszczenie plików sprzed kompaktacji po utworzeniu plików zamiennych przez OPTIMIZE
  • Nie dopuszczaj do gromadzenia się niepotrzebnych, przestarzałych plików danych w tabelach produkcyjnych używanych przez długi czas.

VACUUM nie poprawia wydajności zapytań w taki sam sposób, jak w przypadku optymalizacji kompaktowania lub układu plików. Jego głównym celem jest oczyszczanie magazynu.

Gdzie uruchomić VACUUM

VACUUM jest poleceniem Spark w usłudze Fabric. Uruchom to w środowiskach, które korzystają z silnika Spark, takich jak:

  • Notesniki usługi Fabric
  • Definicje zadań platformy Spark
  • Interfejs użytkownika usługi Lakehouse Obsługa i przepływy pracy obsługi oparte na potokach

Nie uruchamiaj VACUUM w endpointzie SQL Analytics ani w edytorze SQL w magazynie. Te środowiska nie obsługują poleceń konserwacji Spark Delta.

Jeśli chcesz uzyskać przepływ pracy oparty na portalu, zobacz Konserwacja tabel usługi Lakehouse.

Note

W notesach uruchamiaj przykłady języka SQL w komórce Spark SQL, przykłady języka Python w komórce PySpark, a przykłady języka Scala w komórce Scala.

Przykłady składni

Użyj poniższych przykładów podczas uruchamiania VACUUM w Fabric.

Opróżnij tabelę z domyślnym przechowywaniem

VACUUM schema_name.table_name

Odkurz tabelę z niestandardowym progiem retencji

VACUUM schema_name.table_name RETAIN 168 HOURS

Wyświetlanie podglądu plików przy użyciu funkcji DRY RUN

Użyj DRY RUN polecenia , aby wyświetlić listę plików, które zostaną usunięte bez ich usunięcia.

VACUUM schema_name.table_name DRY RUN

Można również połączyć RETAIN i DRY RUN.

VACUUM schema_name.table_name RETAIN 168 HOURS DRY RUN

Odkurzanie w trybie LITE

VACUUM LITE jest szybszą alternatywą, która używa tylko dziennika transakcji delty do identyfikowania niereferenowanych plików, a nie wyświetlania listy wszystkich plików w katalogu tabel. Takie podejście jest znacznie szybsze w przypadku dużych tabel z wieloma plikami.

VACUUM schema_name.table_name LITE

VACUUM schema_name.table_name LITE RETAIN 168 HOURS

VACUUM LITE określa pliki do usunięcia, odczytując dziennik Delta zamiast wykonywać pełne wylistowanie katalogu. Jest to szybsze, ale wymaga wystarczająco długiej historii dziennika, aby określić, które pliki nie mają odwołań. Jeśli dziennik Delta został przycięty bardziej, niż wymaga tego tryb LITE, zostanie zgłoszony wyjątek DELTA_CANNOT_VACUUM_LITE — w takim przypadku należy przełączyć się na standardowy VACUUM (tryb pełny).

Note

VACUUM LITE jest obsługiwany w środowisku uruchomieniowym Fabric Spark 2.0 (Delta 4.1) lub nowszej wersji. Sprawdź, czy wersja środowiska uruchomieniowego Fabric obsługuje tę funkcję.

Odkurzacz z tabelą inwentaryzacyjną

W przypadku bardzo dużych tabel, w których nawet domyślne VACUUM pełne listowanie zawartości katalogu działa wolno, można podać wcześniej przygotowany spis plików. Zamiast wyświetlać katalog tabeli w czasie wykonywania, VACUUM odczytuje ścieżki plików ze spisu, który podajesz.

VACUUM schema_name.table_name USING INVENTORY inventory_table_name

VACUUM schema_name.table_name USING INVENTORY (SELECT * FROM inventory_table_name WHERE path LIKE 'abfss://%')

Tabela spisu (lub kwerenda) musi mieć następujący schemat:

Column Typ Opis
path ciąg Pełny identyfikator URI pliku.
length liczba całkowita Rozmiar pliku w bajtach.
isDir boolean Czy wpis jest katalogiem.
modificationTime liczba całkowita Czas ostatniej modyfikacji pliku w milisekundach od epoki.

Tabelę spisu można wypełnić za pomocą metadanych pliku OneLake, raportów spisu kont magazynu lub niestandardowego zadania platformy Spark zawierającego listę katalogów tabel zgodnie z harmonogramem. To oddziela kosztowny etap listowania plików od samej operacji VACUUM.

Domyślny okres przechowywania

Jeśli nie określisz interwału przechowywania, VACUUM użyj domyślnego okresu przechowywania w ciągu siedmiu dni, czyli 168 godzin.

To domyślne ustawienie zapewnia aktywnym czytelnikom, procesom zapisu i zapytaniom typu time travel bezpieczniejszy przedział czasu, zanim starsze pliki zostaną usunięte.

Sprawdzanie bezpieczeństwa pod kątem krótkich okresów przechowywania

Delta Lake obejmuje kontrolę bezpieczeństwa retencji kontrolowaną przez spark.databricks.delta.retentionDurationCheck.enabled.

Jeśli spróbujesz użyć okresu przechowywania krótszego niż siedem dni, ta kontrola bezpieczeństwa wyświetli ostrzeżenie, chyba że jawnie wyłączysz ewidencjonowanie w konfiguracji platformy Spark.

Przed wyłączeniem tej ochrony należy zachować dodatkową ostrożność. Krótki okres przechowywania może spowodować usunięcie plików, które są nadal potrzebne współbieżnym obciążeniom roboczym lub w scenariuszach odzyskiwania.

Na przykład, te polecenia określają jednodniowy okres przechowywania:

VACUUM schema_name.table_name RETAIN 24 HOURS

Jeśli środowisko zachowuje włączoną kontrolę bezpieczeństwa, środowisko uruchomieniowe ostrzega o ustawieniach przechowywania poniżej siedmiu dni.

Poznaj wpływ na podróże w czasie

Podróż czasowa usługi Delta Lake umożliwia wykonywanie zapytań o starsze wersje tabeli, o ile wymagane pliki historyczne nadal istnieją.

VACUUM Usuwa pliki starsze niż okno przechowywania, więc usuwa również pliki danych potrzebne do podróży w czasie poza tym oknem. Po opróżnieniu tych plików nie można już wykonywać zapytań o te starsze wersje.

Przed skróceniem okresu przechowywania zdecyduj, jakiego zakresu dostępu do danych historycznych wymagają Twoje obciążenia robocze, audyty, procesy debugowania i procesy odzyskiwania. Aby uzyskać więcej informacji, zobacz Time travel (Podróż w czasie).

Omówienie wpływu na wektory usuwania

Wektory usuwania mogą oznaczać wiersze jako usunięte bez natychmiastowego ponownego zapisywania każdego pliku danych, którego dotyczy problem. Ze względu na to zachowanie, pliki, które wyglądają na stare, mogą nadal należeć do aktywnego stanu tabeli.

VACUUM nie usuwa plików, do których nadal istnieją odwołania, w tym plików, które pozostają ważne, ponieważ metadane wektora usuwania nadal na nie wskazują. Jeśli używasz wektorów usuwania, a później zreorganizujesz lub zoptymalizujesz tabelę, po zakończeniu tych zmian więcej nieaktualnych plików może kwalifikować się do VACUUM

Aby fizycznie ponownie zapisać dane, na które mają wpływ wektory usuwania, zobacz Tabele delty REORG.

Postępuj zgodnie z najlepszymi rozwiązaniami

Stosuj te praktyki podczas uruchamiania VACUUM w usłudze Fabric:

  • Uruchom polecenie VACUUM po OPTIMIZE, aby usunąć pliki sprzed kompaktacji, które nie są już potrzebne.
  • Nie ustawiaj okresu przechowywania na mniej niż siedem dni, chyba że dokładnie rozumiesz wpływ na funkcję Time Travel, operacje odczytu i zapisu oraz odzyskiwanie danych.
  • Zaplanuj regularne wykonywanie operacji VACUUM w potokach produkcyjnych, aby nieaktualne pliki nie gromadziły się w usłudze OneLake.
  • Przed skróceniem okresu przechowywania zdecyduj się na swoje wymagania dotyczące podróży.
  • Użyj DRY RUN najpierw, gdy chcesz sprawdzić, które pliki mają zostać usunięte.

Wskazówki dotyczące konserwacji dla całej platformy Fabric można znaleźć w artykułach Omówienie konserwacji tabel i Konserwacja tabel w usłudze Lakehouse.

Dowiedz się, czego VACUUM nie usuwa

VACUUM usuwa nieaktualne pliki danych, ale nie usuwa plików dziennika Delta w folderze _delta_log.

Oczyszczanie dziennika Delta odbywa się zgodnie z zasadami dotyczącymi punktów kontrolnych i przechowywania dzienników, które są odrębne od VACUUM.