Usuwanie nieużywanych plików danych za pomocą polecenia Vacuum

Usuń pliki danych, do których nie odwołuje się już tabela, a które są starsze niż próg przechowywania, uruchamiając VACUUM polecenie na tabeli. Regularne uruchamianie VACUUM jest ważne z uwagi na koszty i zgodność z następujących powodów:

  • Usuwanie nieużywanych plików danych zmniejsza koszty magazynowania w chmurze.
  • Pliki danych usunięte przez VACUUM program mogą zawierać rekordy, które zostały zmodyfikowane lub usunięte. Trwałe usunięcie tych plików z magazynu w chmurze gwarantuje, że te rekordy nie będą już dostępne.

W tabelach z włączoną obsługą odczytu Iceberg VACUUM czyści również metadane Iceberg dla starszych wersji tabeli. Zobacz VACUUMczyszczenie metadanych Iceberg.

Optymalizacja predykcyjna automatycznie uruchamia VACUUM w zarządzanych tabelach Unity Catalog. Usługa Databricks zaleca włączenie optymalizacji predykcyjnych dla wszystkich tabel zarządzanych przez usługę Unity Catalog w celu uproszczenia konserwacji danych i zmniejszenia kosztów magazynowania. Zobacz Optymalizację predykcyjną dla tabel zarządzanych w Unity Catalog.

Zastrzeżenia dotyczące próżni

Domyślny próg przechowywania plików danych po uruchomieniu VACUUM wynosi 7 dni. Aby zmienić to zachowanie, zobacz Konfigurowanie przechowywania danych dla zapytań dotyczących podróży czasowych.

VACUUM może pozostawić puste katalogi po usunięciu wszystkich plików z nich. Kolejne VACUUM operacje usuwają te puste katalogi.

Niektóre funkcje tabeli, takie jak wektory usuwania, używają plików metadanych do oznaczania danych jako usuniętych, a nie ponownego zapisywania plików danych. Użyj REORG TABLE ... APPLY (PURGE) polecenia , aby zatwierdzić te usunięcia i przepisać pliki danych. Zobacz Purge: usunięcia dotyczące tylko metadanych w celu wymuszenia ponownego zapisu danych.

Ważna

  • W wersji Databricks Runtime 13.3 LTS i wyższych, semantyka dla płytkich klonów z tabelami zarządzanymi przez Unity Catalog różni się od innych tabel. Zobacz Użyj VACUUM wraz z płytkimi klonami w Unity Catalog.
  • VACUUM usuwa wszystkie pliki z katalogów, które nie są zarządzane przez Azure Databricks, ignorując katalogi rozpoczynające się od _ lub .. Jeśli przechowujesz dodatkowe metadane, takie jak punkty kontrolne Strukturalnego Przesyłania Strumieniowego w katalogu tabeli, użyj nazwy katalogu takiego jak _checkpoints.
  • Możliwość wykonywania zapytań dotyczących wersji tabeli starszych niż okres przechowywania zostanie utracona po uruchomieniu polecenia VACUUM.
  • Pliki dziennika są usuwane automatycznie i asynchronicznie po operacjach punktu kontrolnego i nie podlegają VACUUM. Podczas gdy domyślny okres przechowywania plików dziennika wynosi 30 dni, uruchomienie VACUUM w tabeli usuwa pliki danych niezbędne do podróży w czasie.
  • Po włączeniu buforowania dysku klaster może zawierać dane z plików Parquet, które zostały usunięte za pomocą polecenia VACUUM. W związku z tym może być możliwe wykonywanie zapytań dotyczących danych z poprzednich wersji tabeli, których pliki zostały usunięte. Ponowne uruchomienie klastra spowoduje usunięcie buforowanych danych. Zobacz Konfigurowanie pamięci podręcznej dysku.

Przykładowa składnia próżni

Aby usunąć pliki, które nie są już wymagane przez wersje starsze niż domyślny okres przechowywania, uruchom polecenie VACUUM bez dodatkowych konfiguracji:

VACUUM table_name

Aby wyświetlić listę plików do usunięcia bez ich usuwania, uruchom VACUUM z opcją DRY RUN:

VACUUM table_name DRY RUN

Aby uzyskać szczegółowe informacje o składni spark SQL, zobacz VACUUM.

Szczegółowe informacje o składni języka Scala, Java i Python można znaleźć w dokumentacji interfejsu API usługi Delta Lake.

Note

W środowisku Databricks Runtime 18.0 lub nowszym użyj właściwości tabeli deletedFileRetentionDuration, aby kontrolować retencję. W przypadku tabel zarządzanych w Unity Catalog ma to zastosowanie do środowisk Databricks Runtime 13.3 LTS i nowszych.

Zobacz Konfigurowanie przechowywania danych dla zapytań dotyczących podróży w czasie.

Tryb pełny a tryb lite

Ważna

Ta funkcja jest dostępna w publicznej wersji zapoznawczej w środowisku Databricks Runtime 16.4 LTS lub nowszym.

Aby zwiększyć wydajność i obniżyć koszty, unikając wypisywania wszystkich plików w katalogu tabeli, podaj słowo kluczowe LITE w instrukcji VACUUM, aby uruchomić alternatywny tryb VACUUM. Jest to przydatne w przypadku dużych tabel, które wymagają częstych VACUUM operacji.

LITE tryb używa dziennika transakcji do identyfikowania plików danych, które nie znajdują się już w VACUUM progu przechowywania i usuwa te pliki danych z tabeli.

Note

Uruchomienie VACUUM w trybie LITE nie spowoduje usunięcia żadnych plików, do których nie odwołuje się dziennik transakcji. Na przykład pliki utworzone przez przerwaną transakcję.

Użyj następującej składni, aby VACUUM w trybie LITE:

VACUUM table_name LITE

FULL tryb jest domyślnym trybem dla próżni. Możesz jawnie uruchomić tryb pełny za pomocą następującego polecenia:

VACUUM table_name FULL

Zobacz: VACUUM.

Requirements

LITE tryb ma następujące wymaganie:

  • Musisz uruchomić co najmniej jedną pomyślną operację VACUUM w ramach skonfigurowanego progu przechowywania dziennika transakcji (domyślnie 30 dni).

Jeśli to wymaganie nie zostanie spełnione, podczas próby uruchomienia VACUUM w LITE trybie zostanie wyświetlony następujący komunikat o błędzie. Aby kontynuować, musisz uruchomić VACUUM w trybie FULL.

VACUUM <tableName> LITE cannot delete all eligible files as some files are not referenced by the log. Please run VACUUM FULL.

Usuwanie tylko metadanych w celu wymuszenia ponownego zapisu danych

Polecenie REORG TABLE ze składnią APPLY (PURGE) umożliwia ponowne zapisywanie danych w celu zastosowania usuwania nietrwałego. Miękkie usunięcia nie powodują ponownego zapisywania danych ani usuwania plików danych, lecz używają metadanych do wskazania, że niektóre wartości danych uległy zmianie. Zobacz: REORG TABLE.

Operacje, które powodują miękkie usunięcia, obejmują następujące elementy:

  • Usuwanie kolumn z włączonym mapowaniem kolumn.
  • Wszelkie modyfikacje danych z włączonymi wektorami usuwania.

Po włączeniu usuwania nietrwałego stare dane mogą pozostać fizycznie obecne w bieżących plikach tabeli nawet po usunięciu lub zaktualizowaniu danych. Aby fizycznie usunąć te dane z tabeli, wykonaj następujące kroki:

  1. Uruchom program REORG TABLE ... APPLY (PURGE). Po wykonaniu tej czynności stare dane nie są już obecne w bieżących plikach tabeli, ale nadal znajdują się w starszych plikach, które są używane do podróży w czasie.
  2. Uruchom polecenie VACUUM , aby usunąć te starsze pliki.

REORG TABLE Tworzy nową wersję tabeli, gdy operacja zostanie ukończona. Wszystkie wersje tabeli w historii przed tą transakcją odnoszą się do starszych plików danych. Koncepcyjnie jest to podobne do OPTIMIZE polecenia , w którym pliki danych są ponownie zapisywane, mimo że dane w bieżącej wersji tabeli pozostają spójne.

Ważna

Pliki danych są usuwane tylko wtedy, gdy pliki wygasły zgodnie z okresem VACUUM przechowywania. Oznacza to, że VACUUM należy wykonać z opóźnieniem po REORG, aby zagwarantować, że starsze pliki wygasły. Okres VACUUM przechowywania można zmniejszyć, aby skrócić wymagany czas oczekiwania, kosztem zmniejszenia maksymalnej historii, która jest przechowywana.

Zalecenia dotyczące rozmiaru klastra pod kątem próżni

Aby wybrać właściwy rozmiar klastra dla VACUUM, należy wziąć pod uwagę, że operacja odbywa się w dwóch fazach:

  1. Zadanie rozpoczyna się przy użyciu wszystkich dostępnych węzłów funkcji wykonawczej do równoległego wyświetlania listy plików w katalogu źródłowym. Zadanie porównuje tę listę ze wszystkimi plikami, do których obecnie odwołuje się dziennik transakcji, aby zidentyfikować pliki do usunięcia. Kierowca siedzi bezczynnie w tym czasie.
  2. Sterownik wystawia polecenia usuwania dla każdego pliku zidentyfikowane do usunięcia. Ponieważ usuwanie pliku jest operacją wykonywaną wyłącznie przez sterownik, wszystkie operacje odbywają się w jednym węźle, podczas gdy węzły robocze pozostają bezczynne.

Aby zoptymalizować koszty i wydajność, usługa Databricks zaleca następujące zalecenia, szczególnie w przypadku długotrwałych zadań próżniowych:

  • Uruchom odkurzanie na klastrze z automatycznym skalowaniem ustawionym na 1-4 procesy robocze, gdzie każdy proces ma 8 rdzeni.
  • Wybierz sterownik z zakresu od 8 do 32 rdzeni. Zwiększ rozmiar sterownika, aby uniknąć błędów braku pamięci (OOM).

Jeśli VACUUM operacje regularnie usuwają ponad 10 tysięcy plików lub przejmują ponad 30 minut czasu przetwarzania, możesz zwiększyć rozmiar sterownika lub liczbę procesów roboczych.

Jeśli okaże się, że spowolnienie występuje podczas identyfikowania plików do usunięcia, dodaj więcej węzłów roboczych. Jeśli spowolnienie wystąpi podczas uruchamiania poleceń usuwania, spróbuj zwiększyć rozmiar sterownika.

Usługa Databricks zaleca regularne uruchamianie VACUUM na wszystkich tabelach, aby zmniejszyć nadmierne koszty magazynowania danych w chmurze. Domyślny próg przechowywania dla próżni wynosi 7 dni. Ustawienie wyższego progu zapewnia dostęp do większej historii dla tabeli, ale zwiększa liczbę przechowywanych plików danych i w rezultacie zwiększa koszty magazynowania od dostawcy usług w chmurze.

Progi próżni i niskiej retencji

Warning

Usługa Databricks zdecydowanie zaleca ustawienie interwału przechowywania co najmniej 7 dni. Jeśli masz zadania uruchamiane przez kilka dni, długotrwałe zadania mogą zapisywać pliki, które nie zostały jeszcze zatwierdzone. Jeśli okres przechowywania jest zbyt krótki, VACUUM może usunąć te niezatwierdzone pliki przed ukończeniem zadania.

Istnieje kontrola bezpieczeństwa, aby zapobiec uruchamianiu niebezpiecznego VACUUM polecenia. Jeśli masz pewność, że w tej tabeli nie są uruchomione żadne operacje, które trwają dłużej niż określony interwał przechowywania, wyłącz to sprawdzanie bezpieczeństwa, ustawiając retentionDurationCheck konfigurację platformy Spark na false:

Delta

SET spark.databricks.delta.retentionDurationCheck.enabled = false

Iceberg

SET spark.databricks.iceberg.retentionDurationCheck.enabled = false

Informacje o inspekcji

VACUUM rejestruje informacje audytu w dzienniku transakcji. Wykonaj zapytanie dotyczące zdarzeń inspekcji przy użyciu polecenia DESCRIBE HISTORY.

Domyślnie logowanie audytu jest włączone na wszystkich platformach dla tabel zarządzanych przez Unity Catalog. Kontrolowanie rejestrowania inspekcji próżni przy użyciu konfiguracji platformy vacuum.logging Spark:

Delta

SET spark.databricks.delta.vacuum.logging.enabled = true

Iceberg

SET spark.databricks.iceberg.vacuum.logging.enabled = true

Aby zastosować tę konfigurację dla całego obszaru roboczego, we wszystkich klastrach, użyj zasady klastra i dodaj do kodu JSON zasady następujący fragment:

Delta

{
  "spark_conf.spark.databricks.delta.vacuum.logging.enabled": {
    "type": "fixed",
    "value": "true"
  }
}

Iceberg

{
  "spark_conf.spark.databricks.iceberg.vacuum.logging.enabled": {
    "type": "fixed",
    "value": "true"
  }
}

Zobacz Tworzenie zasad obliczeniowych i zarządzanie nimi.

Note

Rejestrowanie inspekcji jest również domyślnie włączone dla tabel zewnętrznych.