Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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.
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_unitjest 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, , VACUUMANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, , DATA_SKIPPING_COLUMN_SELECTIONlub COMPATIBILITY_MODE_REFRESH. |
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 lub FAILED: INTERNAL_ERROR. |
SUCCESSFUL |
operation_metrics |
map[ciąg, ciąg] | Dodatkowe szczegóły dotyczące określonej 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 użycia, jaką poniosła ta operacja. Musi być następująca wartość: ESTIMATED_DBU. |
ESTIMATED_DBU |
usage_quantity |
liczba dziesiętna | Ilość jednostki użycia, która została użyta przez tę operację. | 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 plików usuniętych przez tę operację. |
amount_of_data_compacted_bytes |
Ilość bajtów usuniętych przez tę operację. | ||
number_of_output_files |
Liczba nowych plików dodanych przez tę operację. | ||
amount_of_output_data_bytes |
Ilość bajtów dodanych przez tę operację. | ||
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 usuniętych w procesie oczyszczania przez tę operację. |
amount_of_data_deleted_bytes |
Ilość bajtów bezużytecznych zbieranych przez tę operację. | ||
ANALYZE |
Wyzwala przyrostowe aktualizowanie statystyk w celu zwiększenia wydajności zapytań. Zobacz: ANALYZE TABLE. | amount_of_scanned_bytes |
Ilość bajtów skanowanych przez tę operację. |
number_of_scanned_files |
Liczba plików skanowanych przez tę operację. | ||
staleness_percentage_reduced |
Zmniejszenie wartości procentowej nieaktualności po tej operacji. Ta statystyka może wahać się od 0 do 100 na podstawie częstotliwości, która ANALYZE jest uruchamiana. |
||
CLUSTERING |
Inicjuje klastrowanie przyrostowe dla włączonych tabel. Zobacz Używaj płynnego grupowania dla tabel. | number_of_removed_files |
Liczba plików usuniętych przez tę operację. |
number_of_clustered_files |
Liczba nowych plików dodanych przez tę operację. | ||
amount_of_data_removed_bytes |
Ilość bajtów usuniętych przez tę operację. | ||
amount_of_clustered_data_bytes |
Ilość bajtów dodanych przez tę operację. | ||
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 są partycjonowane. |
new_clustering_columns |
Nowe kolumny klastrowania zastosowane przez tę operację. | ||
has_column_selection_changed |
Czy ta operacja zmieniła kolumny klastrowania? | ||
additional_reason |
Przyczyny zmiany lub braku zmian 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 |
Ilość bajtów skanowanych przez tę operację. |
number_of_scanned_files |
Liczba plików skanowanych przez tę operację. | ||
added_data_skipping_columns |
Nowo dodane kolumny pomijania danych zastosowane przez tę operację. | ||
removed_data_skipping_columns |
Dane pomijając kolumny usunięte przez tę operację. | ||
old_data_skipping_columns |
Poprzednia szczegółowa lista kolumn używanych do pomijania danych. | ||
new_data_skipping_columns |
Bieżąca wyczerpująca lista kolumn pomijania danych. | ||
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 trybu zgodności. |
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;