Referencja tabeli systemu optymalizacji predykcyjnej

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ść appendOnly tabeli to true. 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, lub TIMESTAMP_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?

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;