Tabella di riferimento del sistema di ottimizzazione predittiva

Importante

Questa tabella di sistema si trova in anteprima pubblica.

Nota

Per avere accesso a questa tabella, l'area deve supportare l'ottimizzazione predittiva. Vedere aree di Azure Databricks.

Questo articolo descrive lo schema della tabella della cronologia delle operazioni di ottimizzazione predittiva e fornisce query di esempio. L'ottimizzazione predittiva ottimizza il layout dei dati per migliorare le prestazioni e l'efficienza dei costi. La tabella di sistema tiene traccia della cronologia delle operazioni di questa funzionalità. Per informazioni sull'ottimizzazione predittiva, vedere Ottimizzazione predittiva per le tabelle gestite del Catalogo Unity.

percorso tabella: questa tabella di sistema si trova in system.storage.predictive_optimization_operations_history.

Considerazioni sul recapito

  • La tabella del sistema di ottimizzazione predittiva viene aggiornata entro due ore. Tuttavia, le informazioni di fatturazione possono richiedere fino a 24 ore per popolare i dati.
  • L'ottimizzazione predittiva potrebbe eseguire più operazioni nello stesso cluster. In tal caso, la quota di DBU attribuita a ciascuna delle operazioni multiple è approssimativa. Questo è il motivo per cui il usage_unit è impostato su ESTIMATED_DBU. Tuttavia, il numero totale di DBUs spese per il cluster sarà accurato.

Schema della tabella di ottimizzazione predittiva

La tabella di sistema della cronologia delle operazioni di ottimizzazione predittiva usa lo schema seguente:

Nome colonna Tipo di dati Descrizione Esempio
account_id corda ID dell'account. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id corda ID dell'area di lavoro in cui l'ottimizzazione predittiva ha eseguito l'operazione. 1234567890123456
start_time Marca temporale Ora di avvio dell'operazione. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. 2023-01-09 10:00:00.000+00:00
end_time Marca temporale Ora di fine dell'operazione. Le informazioni sul fuso orario vengono registrate alla fine del valore con +00:00 che rappresenta l'ora UTC. 2023-01-09 11:00:00.000+00:00
metastore_name corda Nome del metastore cui appartiene la tabella ottimizzata. metastore
metastore_id corda ID del metastore a cui appartiene la tabella ottimizzata. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name corda Nome del catalogo a cui appartiene la tabella ottimizzata. catalog
schema_name corda Nome dello schema a cui appartiene la tabella ottimizzata. schema
table_id corda ID della tabella ottimizzata. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name corda Nome della tabella ottimizzata. table1
operation_type corda Operazione di ottimizzazione eseguita. Deve essere uno dei seguenti valori: , , , , , , , , DELETE, o PURGE. COMPATIBILITY_MODE_REFRESHDATA_SKIPPING_COLUMN_SELECTIONAUTO_CLUSTERING_COLUMN_SELECTIONCLUSTERINGANALYZEVACUUMCOMPACTION COMPACTION
operation_id corda ID per l'operazione di ottimizzazione. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status corda Stato dell'operazione di ottimizzazione. Deve essere uno dei valori seguenti: SUCCESSFUL, FAILED: INTERNAL_ERROR, FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERRORo FAILED: PRIVATE_LINK_SETUP_ERROR. SUCCESSFUL
operation_metrics mappa[stringa, stringa] I dettagli aggiuntivi sull'ottimizzazione specifica che è stata eseguita. Vedere Metriche delle operazioni. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit corda L'unità d'uso intrattenuta. Deve essere il valore seguente: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity decimale La quantità dell'unità d'uso utilizzata. 2.12

Metriche operative

Le metriche registrate nella colonna operation_metrics variano a seconda del tipo di operazione:

Nome operazione Descrizione dell'operazione Metriche operative Descrizione
COMPACTION Migliora le prestazioni delle query ottimizzando le dimensioni dei file. Vedere Ottimizzare il layout dei file di dati. number_of_compacted_files Numero di file rimossi.
amount_of_data_compacted_bytes Il numero di byte rimossi.
number_of_output_files Il numero di nuovi file aggiunti.
amount_of_output_data_bytes Il numero di byte aggiunti.
VACUUM Riduce i costi di archiviazione eliminando i file di dati non più a cui fa riferimento la tabella. Vedi Eliminazione dei file di dati inutilizzati con vacuum. number_of_deleted_files Il numero di file raccolti.
amount_of_data_deleted_bytes Il numero di byte raccolti.
ANALYZE Attiva l'aggiornamento incrementale delle statistiche per migliorare le prestazioni delle query. Vedere ANALYZE TABLE ... STATISTICHE DI CALCOLO. amount_of_scanned_bytes Il numero di byte scansionati.
number_of_scanned_files Il numero di file scansionati.
staleness_percentage_reduced La riduzione della percentuale di stagnazione. Questa statistica può variare da 0 a 100 in base alla frequenza eseguita ANALYZE .
CLUSTERING Attiva il clustering incrementale per le tabelle abilitate. Vedere Usare clustering liquido per le tabelle. number_of_removed_files Numero di file rimossi.
number_of_clustered_files Il numero di nuovi file aggiunti.
amount_of_data_removed_bytes Il numero di byte rimossi.
amount_of_clustered_data_bytes Il numero di byte aggiunti.
AUTO_CLUSTERING_COLUMN_SELECTION Valuta se aggiornare le colonne di clustering. Per ulteriori informazioni, vedere Clustering liquido automatico. old_clustering_columns La precedente disposizione dei dati, che può essere vecchie chiavi di clustering o "Nessuna" se non partizionata.
new_clustering_columns Le nuove colonne raggruppate.
has_column_selection_changed L'indicatore che le colonne di raggruppamento sono cambiate.
additional_reason Le ragioni del cambiamento o della mancanza di cambiamento nel raggruppamento delle colonne.
DATA_SKIPPING_COLUMN_SELECTION Rileva le colonne con dati mancanti, ignorando le statistiche durante l'elaborazione, e le riempie nuovamente. Vedere Salto dati. amount_of_scanned_bytes Il numero di byte scansionati.
number_of_scanned_files Il numero di file scansionati.
added_data_skipping_columns Le colonne di salto dei dati sono state aggiunte.
removed_data_skipping_columns Le colonne di salto dei dati sono state rimossi.
old_data_skipping_columns La precedente lista esaustiva di colonne che saltano dati.
new_data_skipping_columns L'attuale elenco esaustivo di colonne che saltano i dati.
COMPATIBILITY_MODE_REFRESH Rileva se la modalità di compatibilità non è aggiornata e aggiorna la tabella. Vedere Modalità di compatibilità. N/A Le operazioni di aggiornamento della Modalità Compatibilità.
DELETE Rimuove le righe che hanno superato il periodo di scadenza automatico del time-to-live. Vedere Eliminazione automatica delle righe con durata automatica. number_of_deleted_rows Numero di righe rimosse. Questo è successo 0 quando nessuna riga era idonea per la cancellazione.
amount_of_data_deleted_bytes Il numero di byte rimossi.
PURGE Riscrive i file dati per rimuovere fisicamente le righe già eliminate con vettori di cancellazione. Prima viene eseguito VACUUM su tabelle con vettori di cancellazione abilitati. Vedere Eliminazione automatica delle righe con durata automatica. number_of_purged_rows Il numero di righe eliminate. Questo è successo 0 quando nessuna riga era idonea a essere purgata. Vedere Eliminazione automatica delle righe con durata automatica.

Query di esempio

Le sezioni seguenti includono query di esempio che è possibile usare per ottenere informazioni dettagliate sulla tabella del sistema di ottimizzazione predittiva. Per il funzionamento di queste query, è necessario sostituire i valori dei parametri con i propri valori.

Questo articolo include le query di esempio seguenti:

Quanti DPU stimati hanno usato l'ottimizzazione predittiva negli ultimi 30 giorni?

SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Per trovare lo stesso valore per una pipeline ETL specifica, è prima possibile trovare le tabelle in tale pipeline e quindi cercare le DPU:

-- 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;

In quali tabelle l'ottimizzazione predittiva ha speso maggiormente negli ultimi 30 giorni (costo stimato)?

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;

Su quali tabelle viene eseguite la maggior parte delle operazioni di ottimizzazione predittiva?

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;

Per un determinato catalogo, quanti byte totali sono stati compattati?

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;

Quali tabelle hanno avuto il maggior numero di byte liberati?

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;

Qual è la frequenza di successo per le operazioni eseguite dall'ottimizzazione predittiva?

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;