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.
Dotyczy:
Databricks SQL
Databricks Runtime
Na tej stronie opisano OPTIMIZE polecenie, które optymalizuje układ danych usługi Delta Lake. Możesz zoptymalizować podzbiór danych lub postawić dane według kolumny. Jeśli nie określisz kolokacji, a tabela nie używa klastrowania płynnego, usługa Delta Lake wykonuje optymalizację pakowania bin-packing.
Składnia
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Uwaga
Optymalizacja pakowania bin jest idempotentna: jeśli uruchamiasz go dwa razy w tym samym zestawie danych, drugi przebieg nie ma wpływu. Tworzy równomiernie zrównoważone pliki danych w odniesieniu do ich rozmiaru na dysku, ale niekoniecznie liczby krotki na plik. Te dwie miary są najczęściej skorelowane.
Porządkowanie Z nie jest idempotentne, ale działa przyrostowo. Czas, w jaki trwa porządkowanie Z, nie ma gwarancji zmniejszenia liczby przebiegów. Jeśli jednak żadne nowe dane nie zostały dodane do partycji, która została po prostu zamówiona z, ponowne uruchomienie funkcji Porządkowanie Z na tej partycji nie ma wpływu. Kolejność Z tworzy równomiernie zrównoważone pliki danych w odniesieniu do liczby krotki, ale niekoniecznie rozmiar danych na dysku. Te dwie miary są najczęściej skorelowane, ale niesymetryczne czasy zadań optymalizacji mogą wystąpić, gdy się różnią.
Uwaga
W przypadku korzystania z środowiska Databricks Runtime w celu kontrolowania rozmiaru pliku wyjściowego ustaw konfigurację spark.databricks.delta.optimize.maxFileSize. Wartość domyślna to 1073741824 (1 GB). Określanie 104857600 ustawia rozmiar pliku na 100 MB.
Parametry
-
Identyfikuje istniejącą tabelę delty. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji.
FULLDotyczy:
Dla środowiska Databricks Runtime 16.0 lub nowszegoPonownie zapisuje wszystkie pliki danych w tabeli. Użyj
OPTIMIZE table_name FULLpolecenia , aby:- Zoptymalizuj całą tabelę, w tym dane, które zostały wcześniej klastrowane (w przypadku tabel korzystających z klastrowania płynnego).
- Ponownie skompresuj istniejące pliki danych podczas zmiany kodera kompresji tabeli przy użyciu
delta.parquet.compression.codecwłaściwości .
Aby ponownie skompresować istniejące dane po zmianie kodera-dekodera kompresji, uruchom polecenie
OPTIMIZE table_name FULL:-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Aby zoptymalizować podzbiór plików w tabeli z włączonym klastrowaniem płynnym, połącz się
FULLz predykatemWHERE(Databricks Runtime 18.1 lub nowszym). Obsługiwane są tylko proste predykaty zakresu w jednej kolumnie klastrowania. Plik jest dołączany, jeśli jakakolwiek część jego zakresu nakłada się na predykat. Na przykład zawiera plik z zakresemOPTIMIZE events FULL WHERE date > 15,(col_min = 10, col_max = 20)ponieważ zakres pliku nakłada się na predykat.WHEREOptymalizuje podzbiór wierszy pasujących do predykatu partycji/klastrowania. Obsługiwane są tylko filtry atrybutów klucza partycji/klastrowania.
W przypadku tabel korzystających z klastrowania płynnego należy zamiast tego użyć funkcji
OPTIMIZE table_name FULL WHERE predicate(Databricks Runtime 18.1 i nowszych).ZORDER BYUwaga
Usługa Databricks zaleca płynne klastrowanie dla wszystkich nowych tabel zamiast porządkowania Z. Zobacz Używaj płynnego grupowania dla tabel.
Sortuje informacje o kolumnach w tym samym zestawie plików. Algorytmy pomijania danych usługi Delta Lake używają współlokalności, aby zmniejszyć ilość danych, które należy odczytać. Można określić wiele kolumn jako listę rozdzielaną przecinkami, ale skuteczność współlokalności spada wraz z każdą dodatkową kolumną.
Nie można użyć tej klauzuli w tabelach korzystających z klastrowania płynnego.
Przykłady
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Aby uzyskać więcej informacji, zobacz Optymalizowanie układu pliku danych.