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.
Ważne
Ta tabela systemowa znajduje się w publicznej wersji zapoznawczej.
Uwaga
Aby mieć dostęp do tej tabeli, region musi obsługiwać optymalizację predykcyjną. Zobacz regiony usługi Azure Databricks .
W tym artykule opisano schemat tabeli historii operacji optymalizacji predykcyjnej i przedstawiono przykładowe zapytania. Optymalizacja predykcyjna optymalizuje układ danych pod kątem szczytowej wydajności i wydajności kosztów. Tabela systemowa śledzi historię operacji tej funkcji. Aby uzyskać informacje na temat optymalizacji predykcyjnej, zobacz Optymalizacja predykcyjna dla zarządzanych tabel Unity Catalog.
ścieżka tabeli: ta tabela systemowa znajduje się w system.storage.predictive_optimization_operations_history.
Dostępność rekordów
Dokumenty są zazwyczaj dostępne w ciągu 12 godzin. Dostarczanie danych do nowych przestrzeni roboczych może zająć więcej czasu.
Zagadnienia do rozważenia
Optymalizacja predykcyjna może uruchamiać wiele operacji w tym samym klastrze. Jeśli tak, udział jednostek DBU przypisany do każdej z wielu operacji jest przybliżony. Dlatego usage_unit jest ustawiona na wartość ESTIMATED_DBU. Mimo to całkowita liczba DBU wydanych na klastrze jest dokładna.
Schemat tabeli optymalizacji predykcyjnej
Tabela systemu historii operacji optymalizacji predykcyjnej używa następującego schematu:
| Nazwa kolumny | Typ danych | opis | Przykład |
|---|---|---|---|
account_id |
ciąg | Identyfikator konta. | 11e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
ciąg | Identyfikator obszaru roboczego, w którym uruchomiono operację optymalizacji predykcyjnej. | 1234567890123456 |
start_time |
sygnatura czasowa | Godzina rozpoczęcia operacji. Informacje o strefie czasowej są rejestrowane na końcu wartości, przy czym +00:00 reprezentuje UTC. |
2023-01-09 10:00:00.000+00:00 |
end_time |
sygnatura czasowa | Godzina zakończenia operacji. Informacje o strefie czasowej są rejestrowane na końcu wartości, przy czym +00:00 reprezentuje UTC. |
2023-01-09 11:00:00.000+00:00 |
metastore_name |
ciąg | Nazwa magazynu metadanych, do którego należy zoptymalizowana tabela. | metastore |
metastore_id |
ciąg | Identyfikator magazynu metadanych, do którego należy zoptymalizowana tabela. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
catalog_name |
ciąg | Nazwa katalogu, do którego należy zoptymalizowana tabela. | catalog |
schema_name |
ciąg | Nazwa schematu, do którego należy zoptymalizowana tabela. | schema |
table_id |
ciąg | Identyfikator zoptymalizowanej tabeli. Dla REFRESH_INDEX, ID indeksu. |
138ebb4b-3757-41bb-9e18-52b38d3d2836 |
table_name |
ciąg | Nazwa zoptymalizowanej tabeli. Dla REFRESH_INDEX, nazwa indeksu. |
table1 |
operation_type |
ciąg | Wykonano operację optymalizacji. Musi być jedną z następujących wartości: COMPACTION, , VACUUM, CLUSTERINGANALYZE, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, COMPATIBILITY_MODE_REFRESH, DELETE, PURGE, lub REFRESH_INDEX. |
COMPACTION |
operation_id |
ciąg | Identyfikator operacji optymalizacji. | 4dad1136-6a8f-418f-8234-6855cfaff18f |
operation_status |
ciąg | Stan operacji optymalizacji. Zobacz wartości statusu operacji. | SUCCESSFUL |
operation_metrics |
map[ciąg, ciąg] | Dodatkowe szczegóły dotyczące konkretnej optymalizacji, która została wykonana. Zobacz Metryki operacji. | {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"} |
usage_unit |
ciąg | Jednostka zużycia powstała. Musi być następująca wartość: ESTIMATED_DBU. |
ESTIMATED_DBU |
usage_quantity |
liczba dziesiętna | Ilość użytej jednostki. | 2.12 |
Wartości statusu operacji
Kolumna operation_status ma jedną z następujących wartości:
-
SUCCESSFUL: Operacja zakończyła się pomyślnie. -
FAILED: INTERNAL_ERROR: Operacja zakończyła się niepowodzeniem z powodu bez bardziej konkretnego statusu. -
FAILED: PRIVATE_LINK_SETUP_ERROR: Chmura w chmurze tabeli odmawiała dostępu do obliczeń serwerowych, zwykle z powodu ustawień Private Link lub zapory. Zobacz Sieciowanie bezserwerowej warstwy obliczeniowej. -
FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERROR: Kolumna czasu w polityce automatycznego czasu do aktywności nie istnieje w tabeli, na przykład dlatego, że została usunięta lub zmieniona nazwę. Zobacz Automatyczne usuwanie wierszy z automatycznym czasem wygaśnięcia. -
FAILED: TRANSACTION_CONFLICT_ERROR: Operacja kolidowała z jednoczesnym zapisem do tabeli. Zobacz Wyjątki konfliktów. -
FAILED: CANNOT_MODIFY_APPEND_ONLY_ERROR: Automatyczne ustawienie czasu do życia nie może usuwać wierszy, ponieważ własnośćappendOnlytabeli totrue. Zobacz Tabela własności. -
FAILED: DATATYPE_MISMATCH_ERROR: Kolumna czasu w polityce automatycznego czasu do aktywności ma inny typ danych niżDATE,TIMESTAMP, lubTIMESTAMP_NTZ. Zobacz Automatyczne usuwanie wierszy z automatycznym czasem wygaśnięcia.
Metryki operacji
Metryki zarejestrowane w kolumnie operation_metrics różnią się w zależności od typu operacji:
| Nazwa operacji | Opis operacji | Metryki operacji | Opis |
|---|---|---|---|
COMPACTION |
Zwiększa wydajność zapytań, optymalizując rozmiary plików. Zobacz Optymalizowanie układu pliku danych. | number_of_compacted_files |
Liczba usuniętych plików. |
amount_of_data_compacted_bytes |
Liczba usuniętych bajtów. | ||
number_of_output_files |
Liczba nowych plików dodanych. | ||
amount_of_output_data_bytes |
Liczba dodanych bajtów. | ||
VACUUM |
Zmniejsza koszty magazynowania, usuwając pliki danych, do których nie odwołuje się tabela. Zobacz Usuwanie nieużywanych plików danych za pomocą próżni. | number_of_deleted_files |
Liczba plików zbieranych śmieciami. |
amount_of_data_deleted_bytes |
Liczba bajtów zbieranych śmieciami. | ||
ANALYZE |
Wyzwala przyrostowe aktualizowanie statystyk w celu zwiększenia wydajności zapytań. Zobacz ANALYZE TABLE ... STATYSTYKI OBLICZENIOWE. | amount_of_scanned_bytes |
Liczba zeskanowanych bajtów. |
number_of_scanned_files |
Liczba zeskanowanych plików. | ||
staleness_percentage_reduced |
Zmniejszenie procentu stęchłości. Ta statystyka może wahać się od 0 do 100 w zależności od częstotliwości ANALYZE uruchamiania. |
||
CLUSTERING |
Inicjuje klastrowanie przyrostowe dla włączonych tabel. Zobacz Używaj płynnego grupowania dla tabel. | number_of_removed_files |
Liczba usuniętych plików. |
number_of_clustered_files |
Liczba nowych plików dodanych. | ||
amount_of_data_removed_bytes |
Liczba usuniętych bajtów. | ||
amount_of_clustered_data_bytes |
Liczba dodanych bajtów. | ||
AUTO_CLUSTERING_COLUMN_SELECTION |
Ocenia, czy rozwijać kolumny klastrowania. Zobacz Automatyczne klastrowanie cieczy. | old_clustering_columns |
Poprzedni układ danych, który może być starymi kluczami klastrowania lub "Brak", jeśli nie jest partycjonowany. |
new_clustering_columns |
Nowe kolumny klasteryzacyjne. | ||
has_column_selection_changed |
Wskaźnik, czy zmieniły się kolumny klastrowania. | ||
additional_reason |
Powody zmiany lub brak zmiany w kolumnach klastrowania. | ||
DATA_SKIPPING_COLUMN_SELECTION |
Wykrywa kolumny z brakującymi danymi, pomijając statystyki pochodzące z obciążenia, i je wypełnia. Zobacz Pomijanie danych. | amount_of_scanned_bytes |
Liczba zeskanowanych bajtów. |
number_of_scanned_files |
Liczba zeskanowanych plików. | ||
added_data_skipping_columns |
Dodano kolumny pomijania danych. | ||
removed_data_skipping_columns |
Usunięto kolumny pomijające dane. | ||
old_data_skipping_columns |
Poprzednia wyczerpująca lista kolumn pomijających dane. | ||
new_data_skipping_columns |
Obecna wyczerpująca lista kolumn pomijających dane. | ||
COMPATIBILITY_MODE_REFRESH |
Wykrywa, czy tryb zgodności jest nieaktualny i odświeża tabelę. Zobacz Tryb zgodności. | N/A | Operacje odświeżania w trybie kompatybilności. |
DELETE |
Usuwa wiersze, które minęły automatyczny okres ważności czasu aktywności. Zobacz Automatyczne usuwanie wierszy z automatycznym czasem wygaśnięcia. | number_of_deleted_rows |
Liczba usuniętych wierszy. To 0 wtedy, gdy żaden wiersz nie kwalifikował się do usunięcia. |
amount_of_data_deleted_bytes |
Liczba usuniętych bajtów. | ||
PURGE |
Przepisuje pliki danych, aby fizycznie usunąć wiersze już usunięte z wektorami usuwania. Uruchamia się wcześniej VACUUM na tabelach z włączonymi wektorami usuwania. Zobacz Automatyczne usuwanie wierszy z automatycznym czasem wygaśnięcia. |
number_of_purged_rows |
Liczba usuniętych rzędów. To 0 wtedy żadne wiersze nie mogły zostać usunięte. Zobacz Automatyczne usuwanie wierszy z automatycznym czasem wygaśnięcia. |
REFRESH_INDEX |
Utrzymuje indeksy na bieżąco z ich bazową tabelą.
table_name oraz table_id noszą nazwę indeksu i identyfikator. Zobacz Automatyczne odświeżanie indeksu. |
refresh_type |
Typ odświeżania, który się przeprowadził, taki jak REGULAR (dodaje wpisy dla nowych danych), FULL (usuwa także wpisy dla usuniętych danych) lub PURGE (usuwa wpisy dla wierszy usuniętych przez automatyczne ustawienie czasu na żywo). |
staleness_percentage_reduced |
Procent wierszy tabeli bazowej, których wpisy indeksu zostały zaktualizowane podczas tego odświeżenia. Ta statystyka może wahać się od 0 do 100. |
Przykładowe zapytania
Poniższe sekcje zawierają przykładowe zapytania, których można użyć, aby uzyskać wgląd w tabelę systemu optymalizacji predykcyjnej. Aby te zapytania działały, należy zastąpić wartości parametrów własnymi wartościami.
Ten artykuł zawiera następujące przykładowe zapytania:
- Ile szacowanych jednostek DBU korzysta z optymalizacji predykcyjnej w ciągu ostatnich 30 dni?
- W których tabelach optymalizacja predykcyjna poniosła największe koszty w ciągu ostatnich 30 dni (koszt szacunkowy)?
- W których tabelach jest optymalizacja predykcyjna wykonująca najwięcej operacji?
- W przypadku danego katalogu, ile całkowitych bajtów zostało skompresowanych?
- Jakie tabele miały najwięcej bajtów opróżnionych?
- Jaki jest współczynnik powodzenia operacji uruchamianych przez optymalizację predykcyjną?
Ile szacowanych jednostek DBU korzysta z optymalizacji predykcyjnej w ciągu ostatnich 30 dni?
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
Aby znaleźć tę samą wartość dla określonego potoku ETL, możesz najpierw znaleźć tabele w tym potoku, a następnie wyszukać jednostki DBU:
-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
SELECT DISTINCT target_table_full_name AS target_table_name
FROM system.access.table_lineage
WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
CONCAT_WS('.', catalog_name, schema_name, table_name)
IN ( SELECT target_table_name FROM pipeline_mapping)
AND usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
W których tabelach optymalizacja predykcyjna poniosła największe koszty w ciągu ostatnich 30 dni (szacowany koszt)?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;
W których tabelach jest optymalizacja predykcyjna wykonująca najwięcej operacji?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
operation_type,
COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;
W przypadku danego katalogu, ile łącznie bajtów zostało skompaktowanych?
SELECT
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
metastore_name = :metastore_name
AND catalog_name = :catalog_name
AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;
Jakie tabele miały najwięcej bajtów opróżnionych?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;
Jaki jest współczynnik powodzenia operacji uruchamianych przez optymalizację predykcyjną?
WITH operation_counts AS (
SELECT
COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
COUNT(DISTINCT operation_id) as total_operations
FROM system.storage.predictive_optimization_operations_history
)
SELECT successes / total_operations as success_rate
FROM operation_counts;