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.

Zagadnienia dotyczące dostarczania

  • Tabela systemu optymalizacji predykcyjnej jest aktualizowana w ciągu dwóch godzin. Jednak wypełnienie danych dotyczących rozliczeń może potrwać do 24 godzin.
  • 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 łączna liczba jednostek DBU wydanych na klaster będzie 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. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name ciąg Nazwa zoptymalizowanej tabeli. table1
operation_type ciąg Wykonano operację optymalizacji. Musi być jedną z następujących wartości: COMPACTION, , VACUUM, ANALYZECLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, COMPATIBILITY_MODE_REFRESH, DELETElub PURGE. COMPACTION
operation_id ciąg Identyfikator operacji optymalizacji. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status ciąg Stan operacji optymalizacji. Musi być jedną z następujących wartości: SUCCESSFUL, , FAILED: INTERNAL_ERRORFAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERRORlub FAILED: PRIVATE_LINK_SETUP_ERROR. 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

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.

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;