Referenz zur Systemtabelle für die prädiktive Optimierung

Wichtig

Diese Systemtabelle befindet sich in der Public Preview.

Hinweis

Um Zugriff auf diese Tabelle zu haben, muss Ihre Region eine predictive Optimierung unterstützen. Weitere Informationen finden Sie unter Azure Databricks-Regionen.

In diesem Artikel wird das Schema der Verlaufstabelle für die prädiktive Optimierung beschrieben, und es werden Beispielabfragen bereitgestellt. Die prädiktive Optimierung optimiert Ihr Datenlayout für Spitzenleistung und Kosteneffizienz. Die Systemtabelle verfolgt den Vorgangsverlauf dieses Features. Informationen zur prädiktiven Optimierung finden Sie unter Prädiktive Optimierung für verwaltete Unity Catalog-Tabellen.

Tabellenpfad: Diese Systemtabelle befindet sich unter system.storage.predictive_optimization_operations_history.

Verfügbarkeit der Platten

Unterlagen sind in der Regel innerhalb von 12 Stunden verfügbar. Die Datenlieferung für neue Arbeitsbereiche kann länger dauern.

Überlegungen

Die prädiktive Optimierung kann mehrere Vorgänge im selben Cluster ausführen. In diesem Fall wird der Anteil der DBUs geschätzt, die jedem der mehreren Operationen zugeordnet sind. Aus diesem Grund ist usage_unit auf ESTIMATED_DBU festgelegt. Dennoch ist die Gesamtzahl der für den Cluster ausgegeben DBUs korrekt.

Tabellenschema für die prädikative Optimierung

In der Systemtabelle für den Verlauf der prädiktiven Optimierung wird das folgende Schema verwendet:

Spaltenname Datentyp Beschreibung Beispiel
account_id Zeichenfolge ID des Kontos 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id Zeichenfolge ID des Arbeitsbereichs, in dem die prädiktive Optimierung den Vorgang ausgeführt hat 1234567890123456
start_time Zeitstempel Zeitpunkt, zu dem der Vorgang gestartet wurde Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. 2023-01-09 10:00:00.000+00:00
end_time Zeitstempel Zeitpunkt, zu dem der Vorgang beendet wurde Zeitzoneninformationen werden am Ende des Werts aufgezeichnet, wobei +00:00 die UTC darstellt. 2023-01-09 11:00:00.000+00:00
metastore_name Zeichenfolge Name des Metastores, zu dem die optimierte Tabelle gehört metastore
metastore_id Zeichenfolge Die ID des Metastores, zu dem die optimierte Tabelle gehört. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name Zeichenfolge Name des Katalogs, zu dem die optimierte Tabelle gehört catalog
schema_name Zeichenfolge Name des Schemas, zu dem die optimierte Tabelle gehört schema
table_id Zeichenfolge ID der optimierten Tabelle Für REFRESH_INDEX, die ID des Indexes. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name Zeichenfolge Name der optimierten Tabelle Für REFRESH_INDEX, der Name des Indexes. table1
operation_type Zeichenfolge Der ausgeführte Optimierungsvorgang. Muss einer der folgenden Werte sein: COMPACTION, , , ANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DELETECOMPATIBILITY_MODE_REFRESHDATA_SKIPPING_COLUMN_SELECTION, PURGE, oder .REFRESH_INDEXVACUUM COMPACTION
operation_id Zeichenfolge ID für den Optimierungsvorgang 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status Zeichenfolge Status des Optimierungsvorgangs. Siehe Betriebsstatuswerte. SUCCESSFUL
operation_metrics map[String, String] Die zusätzlichen Details zur spezifischen Optimierung, die durchgeführt wurde. Siehe Vorgangsmetriken. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit Zeichenfolge Die verwendete Einheit. Muss der folgende Wert sein: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity Dezimal Die Menge der verwendeten Einheit. 2.12

Operationsstatuswerte

Die operation_status Spalte weist einen der folgenden Werte auf:

  • SUCCESSFUL: Die Operation wurde erfolgreich abgeschlossen.
  • FAILED: INTERNAL_ERROR: Die Operation scheiterte aus einem Grund, der keinen genaueren Status hat.
  • FAILED: PRIVATE_LINK_SETUP_ERROR: Der Cloud-Speicher der Tabelle verweigerte den Zugriff auf serverlose Rechenleistungen, meist aufgrund von Private Link- oder Firewall-Einstellungen. Siehe Serverless Compute Plane Networking.
  • FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERROR: Die Zeitspalte in der automatischen Time-to-Live-Richtlinie existiert in der Tabelle nicht, zum Beispiel, weil sie gestrichen oder umbenannt wurde. Siehe Automatisches Löschen von Zeilen mit automatischer Gültigkeitsdauer (TTL).
  • FAILED: TRANSACTION_CONFLICT_ERROR: Die Operation kollidierte mit einem gleichzeitigen Schreiben in die Tabelle. Siehe Konflikt ausnahmen.
  • FAILED: CANNOT_MODIFY_APPEND_ONLY_ERROR: Auto-Time-to-Live kann keine Zeilen löschen, weil die appendOnly Eigenschaft der Tabelle lautet true. Siehe Tabelleneigenschaften.
  • FAILED: DATATYPE_MISMATCH_ERROR: Die Zeitspalte in der automatischen Time-to-Live-Politik hat einen anderen Datentyp als DATE, TIMESTAMP, oder TIMESTAMP_NTZ. Siehe Automatisches Löschen von Zeilen mit automatischer Gültigkeitsdauer (TTL).

Vorgangsmetriken

Die in der operation_metrics Spalte aufgezeichneten Metriken variieren je nach Vorgangstyp:

Vorgangsname Vorgangsbeschreibung Vorgangsmetriken Beschreibung
COMPACTION Verbessert die Abfrageleistung durch Optimieren der Dateigrößen. Siehe Optimieren Sie das Layout der Datendatei. number_of_compacted_files Die Anzahl der entfernten Dateien.
amount_of_data_compacted_bytes Die Anzahl der entfernten Bytes.
number_of_output_files Die Anzahl der neuen Dateien, die hinzugefügt wurden.
amount_of_output_data_bytes Die Anzahl der hinzugefügten Bytes.
VACUUM Reduziert die Speicherkosten durch Löschen von Datendateien, auf die nicht mehr in der Tabelle verwiesen wird. Siehe Entfernen nicht verwendeter Datendateien mit Vakuum. number_of_deleted_files Die Anzahl der gesammelten Akten.
amount_of_data_deleted_bytes Die Anzahl der gesammelten Bytes.
ANALYZE Startet die inkrementelle Aktualisierung von Statistiken zur Verbesserung der Abfrageleistung. Siehe ANALYZE TABLE ... COMPUTE STATISTICS. amount_of_scanned_bytes Die Anzahl der gescannten Bytes.
number_of_scanned_files Die Anzahl der gescannten Dateien.
staleness_percentage_reduced Die Verringerung der Stagnationsquote. Diese Statistik kann je nach Häufigkeit ANALYZE von 0 bis 100 reichen.
CLUSTERING Löst das inkrementelle Clustering für aktivierte Tabellen aus. Siehe Verwenden von Flüssigclustering für Tabellen. number_of_removed_files Die Anzahl der entfernten Dateien.
number_of_clustered_files Die Anzahl der neuen Dateien, die hinzugefügt wurden.
amount_of_data_removed_bytes Die Anzahl der entfernten Bytes.
amount_of_clustered_data_bytes Die Anzahl der hinzugefügten Bytes.
AUTO_CLUSTERING_COLUMN_SELECTION Wertet aus, ob Clusteringspalten weiterentwickelt werden sollen. Siehe Automatische Flüssigkeitsclusterung. old_clustering_columns Das vorherige Datenlayout, das alte Clustering-Schlüssel oder "None" sein kann, wenn nicht partitioniert.
new_clustering_columns Die neuen Cluster-Säulen.
has_column_selection_changed Der Indikator, ob sich die Cluster-Spalten verändert haben.
additional_reason Die Gründe für die Änderung oder keine Änderung der Clustering-Spalten.
DATA_SKIPPING_COLUMN_SELECTION Erkennt Spalten mit fehlenden Daten, indem es Statistikdaten aus der Arbeitslast überspringt und die fehlenden Daten ergänzt. Siehe Datenüberspringen. amount_of_scanned_bytes Die Anzahl der gescannten Bytes.
number_of_scanned_files Die Anzahl der gescannten Dateien.
added_data_skipping_columns Die Datenüberspring-Spalten wurden hinzugefügt.
removed_data_skipping_columns Die Datenüberspring-Spalten wurden entfernt.
old_data_skipping_columns Die vorherige vollständige Liste der Datenüberspring-Spalten.
new_data_skipping_columns Die derzeit vollständige Liste der Datenüberspring-Spalten.
COMPATIBILITY_MODE_REFRESH Erkennt, ob der Kompatibilitätsmodus veraltet ist und die Tabelle aktualisiert. Siehe Kompatibilitätsmodus. N/A Die Aktualisierungsoperationen im Kompatibilitätsmodus.
DELETE Entfernt Zeilen, die die automatische Laufzeit der Laufzeit überschritten haben. Siehe Automatisches Löschen von Zeilen mit automatischer Gültigkeitsdauer (TTL). number_of_deleted_rows Die Anzahl der entfernten Zeilen. Zu diesem 0 Zeitpunkt waren keine Zeilen für die Löschung berechtigt.
amount_of_data_deleted_bytes Die Anzahl der entfernten Bytes.
PURGE Schreibt Datendateien um, um bereits gelöschte Zeilen mit Löschvektoren physisch zu entfernen. Läuft vorher VACUUM auf Tabellen mit aktivierten Löschvektoren. Siehe Automatisches Löschen von Zeilen mit automatischer Gültigkeitsdauer (TTL). number_of_purged_rows Die Anzahl der Reihen wurde gesäubert. Zu diesem 0 Zeitpunkt konnten keine Reihen gesäubert werden. Siehe Automatisches Löschen von Zeilen mit automatischer Gültigkeitsdauer (TTL).
REFRESH_INDEX Hält die Indizes mit ihrer Basistabelle auf dem neuesten Stand. table_name und table_id den Indexnamen und die ID tragen. Siehe Automatische Index-Aktualisierung. refresh_type Die Art der Aktualisierung, die ausgeführt wurde, zum Beispiel REGULAR (fügt Einträge für neue Daten hinzu), FULL (entfernt auch Einträge für gelöschte Daten) oder PURGE (entfernt Einträge für Zeilen, die durch Auto-Time-to-Live gelöscht wurden).
staleness_percentage_reduced Der Prozentsatz der Zeilen der Basistabelle, deren Indexeinträge durch diese Aktualisierung auf den neuesten Stand gebracht wurden. Diese Statistik kann von 0 bis 100 reichen.

Beispielabfragen

Die folgenden Abschnitte enthalten Beispielabfragen, mit denen Sie Erkenntnisse zur Systemtabelle der prädiktiven Optimierung gewinnen können. Damit diese Abfragen funktionieren, müssen Sie die Parameterwerte durch Ihre eigenen Werte ersetzen.

Dieser Artikel enthält die folgenden Beispielabfragen:

Wie viele DBUs wurden in den letzten 30 Tagen für die prädiktive Optimierung schätzungsweise verbraucht?

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

Um denselben Wert für eine bestimmte ETL-Pipeline zu finden, können Sie zuerst die Tabellen in dieser Pipeline finden und dann nach den DBUs suchen:

-- 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 welchen Tabellen hat die prädiktive Optimierung in den letzten 30 Tagen die meisten aufgewendet (geschätzte Kosten)?

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;

In welchen Tabellen führt die prädiktive Optimierung die meisten Vorgänge aus?

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;

Für einen bestimmten Katalog: Wie viele Bytes wurden komprimiert?

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;

In welchen Tabellen wurden die meisten Bytes bereinigt?

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;

Was ist die Erfolgsquote für Vorgänge, die von der Vorhersageoptimierung ausgeführt werden?

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;