Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
VACUUMprogram 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
VACUUMwraz z płytkimi klonami w Unity Catalog. -
VACUUMusuwa 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.- Dane dla strumienia zmian danych są zarządzane w katalogu
_change_datai usuwane przy użyciuVACUUM. Zobacz Use change data feed on Azure Databricks (Używanie zestawienia zmian w Azure Databricks). - Indeksy filtrów Bloom (przestarzałe) używają
_delta_indexkatalogu .VACUUMczyści pliki w tym katalogu. Zobacz Indeksy filtrów Blooma (przestarzałe).
- Dane dla strumienia zmian danych są zarządzane w katalogu
- 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, uruchomienieVACUUMw 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ę
VACUUMw 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:
- 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. - 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:
- 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.
- 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.
Zalecana częstotliwość próżni
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.