Überwachen der Aktivität

Der Bereich Activity von Snowsight, the Snowflake web interface bietet folgende Optionen:

  • Abfragen überwachen, die von Benutzern Ihres Kontos ausgeführt werden

  • Details zu Abfragen anzeigen

  • Leistungsdaten anzeigen

  • Untersuchen jedes Schritt einer ausgeführten Abfrage

  • Status des Datenladens mit COPY INTO (Massenladen) und Pipes (kontinuierliches Laden) überwachen

  • Details zu Instanzen von Bulk- und kontinuierlichem Datenladen anzeigen

  • Zum Kopierverlauf für einzelne Tabellen navigieren

In diesem Thema wird beschrieben, wie Sie den Bereich Activity verwenden, um die Aktivitäten Ihres Snowflake-Kontos zu verstehen.

Unter diesem Thema:

Verwenden des Aktivitätsbereichs

Der folgende Abschnitt gibt einen kurzen Überblick über die Verwendung des Bereichs Activity von Snowsight.

Der Bereich Activity umfasst die folgenden Seiten:

Abfrageverlauf

Auf der Seite Query History können Benutzer Details zu allen Abfragen anzeigen, die in den letzten 14 Tagen über Ihr Snowflake-Konto ausgeführt wurden. Aufgrund der Datenaufbewahrungsrichtlinie für Sitzungen listet der Abfrageverlauf nicht den Benutzer auf, der eine Abfrage ausgeführt hat, wenn diese Abfrage mehr als 7 Tage zurückliegt.

Wenn Sie Informationen für ältere Abfragen benötigen, versuchen Sie, eine Abfrage auf der Ansicht QUERY_HISTORY im Account Usage-Schema auszuführen.

Innerhalb eines Arbeitsblatts können Sie den Abfrageverlauf für Abfragen einsehen, die in diesem Arbeitsblatt ausgeführt wurden. Siehe Abfrageverlauf anzeigen.

Dieser Abschnitt gibt einen kurzen Überblick über die Navigation und Verwendung der Seite Query History.

Schnittstelle

Beschreibung

Grundlegende Filter

Verwenden Sie die Filter in der rechten oberen Ecke der Seite, um die Tabelle zu filtern. Sie können nach folgenden Kriterien filtern:

  • Status

    • All (Standard)

    • Queued

    • Blocked

    • Running

    • Failed

    • Successful

  • User

    • All

    • Benutzer, mit dem Sie sich angemeldet haben (Standard)

    • Einzelne Snowflake-Benutzer in Ihrem Konto

Zusätzliche Filter

Verwenden Sie Filters in der rechten oberen Ecke der Seite, um zusätzliche Filter für Abfragen festzulegen. Sie können nach folgenden Kriterien filtern:

  • SQL Text

  • Query ID

  • Warehouse

  • Duration

  • Session ID

  • Query Tag

  • Client generated statements

  • Queries executed by user tasks

Spalten

Verwenden Sie Columns in der rechten oberen Ecke der Seite, um Tabellenspalten hinzuzufügen oder zu entfernen. Die Abfragetabelle enthält die folgenden Spalten:

  • All

  • SQL Text (Standard)

  • Query ID (Standard)

  • Status (Standard)

  • User (Standard)

  • Warehouse (Standard)

  • Duration (Standard)

  • Started (Standard)

  • End Time

  • Session ID

  • Client Driver

  • Bytes Scanned

  • Cluster Number

  • Rows

  • Query Tag

Automatisch aktualisieren

Aktivieren Sie in der rechten oberen Ecke der Seite die Option Auto Refresh. Wenn Auto Refresh aktiviert ist, wird die Tabelle alle zehn Sekunden aktualisiert.

Die Abfragetabelle enthält standardmäßig die folgenden Spalten:

  • SQL Text

  • Query ID

  • Status

  • User

  • Warehouse

  • Duration

  • Started

Sie können zusätzliche Spalten hinzufügen.

Um zusätzliche Details zu einer Abfrage anzuzeigen, wählen Sie die Abfrage in der Tabelle aus.

Abfrage

Wenn Sie eine Abfrage in der Abfragetabelle auswählen, wird die Abfrageseite angezeigt.

Dieser Abschnitt gibt einen kurzen Überblick über die Navigation und Verwendung der Abfrageseite.

Schnittstelle

Beschreibung

Grundlegende Details

Grundlegende Informationen zu der Abfrage finden Sie oben auf der Seite.

Registerkarten der Abfrage-Seite

Die Abfrage-Seite enthält die folgenden Registerkarten:

  • Query Details

  • Query Profile

Details zu Abfragen

Die Registerkarte Query Details liefert die Ergebnisse der Abfrage zusammen mit zusätzlichen Informationen. Die Registerkarte Query Details ist die Standard-Registerkarte für die Abfrageseite. Die Registerkarte Query Details enthält die folgenden Bereiche:

  • Details

  • SQL Text

  • Results

Der Abschnitt Details enthält zusätzliche Informationen zur Ausführung der Abfrage, einschließlich:

  • Status der Abfrage

  • Startzeitpunkt der Abfrage

  • Beendigungszeitpunkt der Abfrage

  • Dauer der Abfrage

  • Abfrage-ID

  • Sitzung-ID

  • Treiberstatus

  • Clienttreiber

Der Abschnitt SQL Text enthält den eigentlichen Text der Abfrage. Bewegen Sie den Mauszeiger über den SQL-Text, um den Text in einem Arbeitsblatt zu öffnen oder den Text zu kopieren.

Der Abschnitt Results enthält die Ergebnisse der Abfrage. Wählen Sie Export Query aus, um die Ergebnisse als CSV-Datei zu exportieren.

Query Profile

Auf der Registerkarte Query Profile können Sie den Ausführungsplan der Abfrage untersuchen und detaillierte Informationen zu den einzelnen Ausführungsschritten abrufen.

Query Profile ist ein leistungsfähiges Tool zum Verständnis der Mechanismen von Abfragen. Es kann verwendet werden, wenn Sie mehr über die Leistung oder das Verhalten einer bestimmten Abfrage erfahren müssen. Das Tool soll Ihnen helfen, typische Fehler in SQL-Abfrageausdrücken zu erkennen, um potenzielle Leistungsengpässe und Verbesserungsmöglichkeiten zu identifizieren.

Dieser Abschnitt gibt einen kurzen Überblick über die Navigation und Verwendung von Query Profile.

Schnittstelle

Beschreibung

Ausführungsplan von Abfragen

Der Ausführungsplan von Abfragen wird in der Mitte von Query Profile angezeigt.

Der Ausführungsplan von Abfragen besteht aus Operatorknoten, die Rowset-Operatoren repräsentieren.

Pfeile zwischen den Operatoren zeigen die Rowsets an, die von einem Operator zu einem anderen weitergegeben werden.

Operatorknoten

Jeder Operatorknoten enthält folgende Informationen:

  • Operatortyp und Operator-ID

  • Die für das Ausführen dieses Operators benötigte Zeit in Prozent der Abfragedauer

  • Vorschau der Operatordetails. Beispielsweise der Name einer Tabelle oder einer Liste von Ausdrücken.

Query Profile-Navigation

Verwenden Sie die Schaltflächen in der linken oberen Ecke von Query Profile für folgende Aktionen:

  • Zwischen Ausführungsschritten wechseln

  • Abfrageausführungsplan in das Fenster einpassen

  • Abfrageausführungsplan vergrößern/verkleinern

Bemerkung

Schritte werden nur angezeigt, wenn die Abfrage in Schritten ausgeführt wurde.

Informationsbereiche

Query Profile bietet verschiedene Informationsbereiche. Die Bereiche werden im Abfrageausführungsplan angezeigt. Welche Bereiche angezeigt werden, hängt vom Fokus des Abfrageausführungsplans ab.

Query Profile enthält die folgenden Informationsbereiche:

  • Profile Overview

  • Statistics

  • Most Expensive Nodes

  • Attributes

Weitere Informationen zu den Informationen, die in den Bereichen bereitgestellt werden, finden Sie unter Referenz zum Abfrageverlauf.

Referenz zum Abfrageverlauf

In diesem Abschnitt werden alle Elemente beschrieben, die in den einzelnen Informationsbereichen angezeigt werden können. Der genaue Inhalt der Informationsfenster hängt vom Kontext des Abfrageausführungsplans ab.

Profilübersicht

Der Bereich enthält Informationen dazu, welche Verarbeitungsaufgaben Abfragezeit verbraucht haben. Die Ausführungszeit enthält Informationen darüber, wofür die Zeit während der Verarbeitung einer Abfrage verbraucht wurde. Die aufgewendete Zeit kann in folgende Kategorien unterteilt werden:

  • Processing – Zeit, die von der CPU für die Datenverarbeitung verbraucht wurde.

  • Local Disk IO – Zeit, in der die Verarbeitung durch den Zugriff auf die lokale Festplatte blockiert wurde.

  • Remote Disk IO – Zeit, in der die Verarbeitung durch Remote-Festplattenzugriff blockiert wurde.

  • Network Communication – Zeit, in der die Verarbeitung auf die Netzwerkdatenübertragung wartete.

  • Synchronization – Verschiedene Synchronisationsaktivitäten zwischen den beteiligten Prozessen.

  • Initialization – Zeit, die für das Einrichten der Abfrageverarbeitung verbraucht wurde.

Statistiken

Eine wichtige Informationsquelle im Detailbereich sind die verschiedenen Statistiken, die in folgende Abschnitte unterteilt sind:

  • IO – Informationen zu den während der Abfrage ausgeführten Eingabe/Ausgabe-Operationen:

    • Scan progress – Prozentsatz der Daten, die bislang für eine bestimmte Tabelle gescannt wurden.

    • Bytes scanned – Anzahl der bislang gescannten Bytes.

    • Percentage scanned from cache – Prozentsatz der Daten, die vom lokalen Festplattencache gescannt wurden.

    • Bytes written – Geschriebene Bytes (z. B. beim Laden in eine Tabelle).

    • Bytes written to result – Bytes, die in das Ergebnisobjekt geschrieben wurden. So würde beispielsweise select * from . . . eine Menge von Ergebnissen im tabellarischen Format für jedes Feld in der Auswahl liefern. Im Allgemeinen repräsentiert das Ergebnisobjekt das, was als Ergebnis der Abfrage erzeugt wird, und Bytes written to result steht für die Größe des zurückgegebenen Ergebnisses.

    • Bytes read to result – Bytes, die aus dem Ergebnisobjekt gelesen wurden.

    • External Bytes scanned – Bytes, die von einem externen Objekt, z. B. einem Stagingbereich, gelesen wurden.

  • DML – Statistiken zu DML–Abfragen (Datenbearbeitungssprache):

    • Number of rows inserted – Anzahl der in eine Tabelle (oder Tabellen) eingefügten Zeilen.

    • Number of rows updated – Anzahl der in einer Tabelle aktualisierten Zeilen.

    • Number of rows deleted – Anzahl der aus einer Tabelle gelöschten Zeilen.

    • Number of rows unloaded – Anzahl der während des Datenexports entladenen Zeilen.

  • Pruning – Informationen zu den Auswirkungen der Tabellenverkürzung:

    • Partitions scanned – Anzahl der bisher gescannten Partitionen.

    • Partitions total – Gesamtanzahl der Partitionen einer Tabelle.

  • Spilling – Informationen zur Festplattennutzung für Operationen, bei denen Zwischenergebnisse nicht in den Arbeitsspeicher passen:

    • Bytes spilled to local storage – Datenmenge, die auf die lokale Festplatte übertragen wurde.

    • Bytes spilled to remote storage – Datenmenge, die auf die externe Festplatte übertragen wurde.

  • Network – Netzwerk-Kommunikation:

    • Bytes sent over the network – Über das Netzwerk gesendete Datenmenge.

  • External Functions – Informationen zu Aufrufen externer Funktionen:

    Die folgenden Statistiken werden für jede externe Funktion angezeigt, die von der SQL-Anweisung aufgerufen wird. Wenn dieselbe Funktion mehrmals von derselben SQL-Anweisung aufgerufen wurde, werden die Statistiken aggregiert.

    • Total invocations – Häufigkeit, mit der eine externe Funktion aufgerufen wurde. Der Wert kann sich von der Anzahl der externen Funktionsaufrufe im Text der SQL-Anweisung unterscheiden und zwar aufgrund der Anzahl der Batches, in die Zeilen unterteilt sind, der Anzahl der Wiederholungsversuche (bei vorübergehenden Netzwerkproblemen) usw.

    • Rows sent – Anzahl der an externe Funktionen gesendeten Zeilen.

    • Rows received – Anzahl der von externen Funktionen empfangenen Zeilen.

    • Bytes sent (x-region) – Anzahl der an externe Funktionen gesendeten Bytes. Wenn das Etikett „(x-region)“ enthält, wurden die Daten über Regionen hinweg gesendet (was sich auf die Abrechnung auswirken kann).

    • Bytes received (x-region) – Anzahl der von externen Funktionen empfangenen Bytes. Wenn das Etikett „(x-region)“ enthält, wurden die Daten über Regionen hinweg gesendet (was sich auf die Abrechnung auswirken kann).

    • Retries due to transient errors – Anzahl der Wiederholungen aufgrund vorübergehender Fehler.

    • Average latency per call – Durchschnittliche Zeit pro Aufruf zwischen dem Zeitpunkt, zu dem Snowflake die Daten gesendet hat, und dem Zeitpunkt, zu dem Snowflake die zurückgegebenen Daten empfangen hat.

    • HTTP 4xx errors – Gesamtzahl der HTTP-Anforderungen, die einen 4xx-Statuscode zurückgegeben haben.

    • HTTP 5xx errors – Gesamtzahl der HTTP-Anforderungen, die einen 5xx-Statuscode zurückgegeben haben.

    • Latency per successful call (avg) – Durchschnittliche Latenz von erfolgreichen HTTP-Anforderungen.

    • Avg throttle latency overhead – Durchschnittlicher Overhead pro erfolgreicher Anforderung aufgrund einer durch Drosselung verursachten Verlangsamung (HTTP 429).

    • Batches retried due to throttling – Anzahl der Batches, deren Ausführung aufgrund von HTTP-Fehler 429 erneut versucht wurden.

    • Latency per successful call (P50) – 50. Perzentil-Latenz von erfolgreichen HTTP-Anforderungen. 50 Prozent aller erfolgreichen Anforderungen wurden in weniger als dieser Zeit abgeschlossen.

    • Latency per successful call (P90) – 90. Perzentil-Latenz von erfolgreichen HTTP-Anforderungen. 90 Prozent aller erfolgreichen Anforderungen wurden in weniger als dieser Zeit abgeschlossen.

    • Latency per successful call (P95) – 95. Perzentil-Latenz von erfolgreichen HTTP-Anforderungen. 95 Prozent aller erfolgreichen Anforderungen wurden in weniger als dieser Zeit abgeschlossen.

    • Latency per successful call (P99) – 99. Perzentil-Latenz von erfolgreichen HTTP-Anforderungen. 99 Prozent aller erfolgreichen Anforderungen wurden in weniger als dieser Zeit abgeschlossen.

  • Extension Functions – Informationen zu Aufrufen von Erweiterungsfunktionen:

    • Java UDF handler load time – Zeit, die der Java-UDF-Handler zum Laden benötigt.

    • Total Java UDF handler invocations – Anzahl der Aufrufe des Java-UDF-Handlers.

    • Max Java UDF handler execution time – Maximaler Zeitaufwand für die Ausführung des Java-UDF-Handlers.

    • Avg Java UDF handler execution time – Durchschnittlicher Zeitaufwand für die Ausführung des Java-UDF-Handlers.

    • Java UDTF process() invocations – Anzahl der Aufrufe der Java-UDTF-Methode process.

    • Java UDTF process() execution time – Zeitaufwand für die Ausführung des Java-UDTF-Prozesses.

    • Avg Java UDTF process() execution time – Durchschnittlicher Zeitaufwand für die Ausführung des Java-UDTF-Prozesses.

    • Java UDTF’s constructor invocations – Anzahl der Aufrufe des Java-UDTF-Konstruktors.

    • Java UDTF’s constructor execution time – Zeitaufwand für die Ausführung des Java-UDTF-Konstruktors.

    • Avg Java UDTF’s constructor execution time – Durchschnittlicher Zeitaufwand für die Ausführung des Java-UDTF-Konstruktors.

    • Java UDTF endPartition() invocations – Anzahl der Aufrufe der Java-UDTF-Methode endPartition.

    • Java UDTF endPartition() execution time – Zeitaufwand für die Ausführung der Java-UDTF-Methode endPartition.

    • Avg Java UDTF endPartition() execution time – Durchschnittlicher Zeitaufwand für die Ausführung der Java-UDTF-Methode endPartition.

    • Max Java UDF dependency download time – Maximaler Zeitaufwand für das Herunterladen der Java-UDF-Abhängigkeiten.

    • Max JVM memory usage – Spitzenauslastung des Arbeitsspeichers, wie von JVM gemeldet.

    • Java UDF inline code compile time in ms – Kompilierungszeit für den Java-UDF-Inline-Code.

    • Total Python UDF handler invocations – Anzahl der Aufrufe des Python-UDF-Handlers.

    • Total Python UDF handler execution time – Gesamtausführungszeit für den Python-UDF-Handler.

    • Avg Python UDF handler execution time – Durchschnittlicher Zeitaufwand für die Ausführung des Python-UDF-Handlers.

    • Python sandbox max memory usage – Spitzenauslastung des Arbeitsspeichers durch die Python-Sandbox-Umgebung.

    • Avg Python env creation time: Download and install packages – Durchschnittlicher Zeitaufwand für das Erstellen der Python-Umgebung, einschließlich des Herunterladens und Installierens von Paketen.

    • Conda solver time – Zeitaufwand für die Ausführung des Conda-Solvers zur Auflösung von Python-Paketen.

    • Conda env creation time – Zeitaufwand für das Erstellen der Python-Umgebung.

    • Python UDF initialization time – Zeitaufwand für das Initialisieren der Python-UDF.

    • Number of external file bytes read for UDFs – Anzahl der für UDFs gelesenen Bytes für externe Dateien.

    • Number of external files accessed for UDFs – Anzahl der Zugriffe auf externe Dateien für UDFs.

    Wenn der Wert eines Feldes, z. B. „Retries due to transient errors“, null ist, wird das Feld nicht angezeigt.

Die teuersten Knoten

Im Bereich werden alle Knoten aufgelistet, die 1 % oder mehr der gesamten Ausführungszeit der Abfrage (oder die Ausführungszeit für den angezeigten Abfrageschritt, wenn die Abfrage in mehreren Verarbeitungsschritten ausgeführt wurde) in Anspruch genommen haben. Der Bereich listet die Knoten nach Ausführungszeit in absteigender Reihenfolge auf, sodass Benutzer die teuersten Operatorknoten in Bezug auf die Ausführungszeit schnell finden können.

Attribute

In den folgenden Abschnitten finden Sie eine Liste der häufigsten Operatortypen und ihrer Attribute.

Datenzugriffs- und Datengenerierungsoperatoren
TableScan

Stellt den Zugriff auf eine einzelne Tabelle dar. Attribute:

  • Full table name – Name der Tabelle, auf die zugegriffen wird, einschließlich Datenbank und Schema.

  • Columns – Liste der gescannten Spalten

  • Table alias – Verwendeter Tabellenalias, falls vorhanden

  • Extracted Variant path – Liste der aus VARIANT-Spalten extrahierten Pfade

ValuesClause

Liste der Werte, die mit der VALUES-Klausel bereitgestellt werden. Attribute:

  • Number of values – Anzahl der produzierten Werte.

  • Values – Liste der produzierten Werte.

Generator

Generiert Datensätze mit dem TABLE(GENERATOR(...))-Konstrukt. Attribute:

  • rowCount – bereitgestellter rowCount-Parameter

  • timeLimit – bereitgestellter timeLimit-Parameter

ExternalScan

Stellt den Zugriff auf Daten dar, die in Stagingobjekten gespeichert sind. Kann Teil von Abfragen sein, die Daten direkt in Stagingbereichen scannen, aber auch Datenladeoperationen (d. h. COPY-Anweisungen).

Attribute:

  • Stage name – Name des Stagingbereichs, von dem die Daten gelesen werden.

  • Stage type – Typ des Stagingbereichs (z. B. TABLE STAGE).

InternalObject

Stellt den Zugriff auf ein internes Datenobjekt dar (z. B. eine Information Schema-Tabelle oder das Ergebnis einer vorherigen Abfrage). Attribute:

  • Object Name – Name oder Typ des Objekts, auf das zugegriffen wird.

Datenverarbeitungsoperatoren
Filter

Stellt eine Operation dar, mit der Datensätze gefiltert werden. Attribute:

  • Filter condition – Bedingung, die zum Filtern verwendet wird.

Join

Kombiniert zwei Eingaben unter einer bestimmten Bedingung. Attribute:

  • Join Type – Typ der Join-Verknüpfung (z. B. INNER, LEFT OUTER usw.)

  • Equality Join Condition – Listet bei Joins, die auf Gleichheit basierende Bedingungen verwenden, die zum Verbinden der Elemente verwendeten Ausdrücke auf.

  • Additional Join Condition – Einige Verbindungen verwenden Bedingungen mit Prädikaten, die nicht auf Gleichheit basieren. Diese werden hier aufgelistet.

Bemerkung

Join-Prädikate, die auf Ungleichheit basieren, können zu deutlich niedrigeren Verarbeitungsgeschwindigkeiten führen und sollten nach Möglichkeit vermieden werden.

Aggregatfunktionen

Gruppiert die Eingabe und berechnet Aggregatfunktionen. Kann SQL-Konstrukte wie GROUP BY oder SELECT DISTINCT darstellen. Attribute:

  • Grouping Keys – Wenn GROUP BY verwendet wird, werden die Ausdrücke aufgelistet, nach denen gruppiert wird.

  • Aggregate Functions – Liste der Funktionen, die für jede Aggregatgruppe berechnet wurden, z. B. SUM.

GroupingSets

Repräsentiert Konstrukte wie GROUPING SETS, ROLLUP und CUBE. Attribute:

  • Grouping Key Sets – Liste der Gruppierungssätze

  • Aggregate Functions – Liste der Funktionen, die für jede Gruppe berechnet wurden, z. B. SUM.

WindowFunction

Berechnet Fensterfunktionen. Attribute:

  • Window Functions – Liste der berechneten Fensterfunktionen.

Sort

Sortiert die Eingabe anhand eines gegebenen Ausdrucks. Attribute:

  • Sort Keys – Ausdruck, der die Sortierreihenfolge definiert.

SortWithLimit

Erstellt nach der Sortierung einen Teil der Eingabesequenz, normalerweise das Ergebnis eines ORDER BY ... LIMIT ... OFFSET ...-Konstrukts in SQL.

Attribute:

  • Sort Keys – Ausdruck, der die Sortierreihenfolge definiert.

  • Number of rows – Anzahl der erzeugten Zeilen.

  • Offset – Position in der sortierten Sequenz, ab der die produzierten Tupel ausgegeben werden.

Flatten

Verarbeitet VARIANT-Datensätze und vereinfacht sie ggf. in einem angegebenen Pfad. Attribute:

  • Input – Eingabeausdruck, der zum Vereinfachen der Daten verwendet wird.

JoinFilter

Spezielle Filteroperation, bei der Tupel entfernt werden, die als möglicherweise nicht mit der Bedingung eines Joins im Abfrageplan übereinstimmend identifiziert werden können. Attribute:

  • Original join ID – Join, mit dem Tupel identifiziert werden, die herausgefiltert werden können.

UnionAll

Verkettet zwei Eingänge. Attribute: keine.

ExternalFunction

Repräsentiert die Verarbeitung durch eine externe Funktion.

DML-Operatoren
Insert

Fügt Datensätze entweder durch eine INSERT- oder COPY-Operation zu einer Tabelle hinzu. Attribute:

  • Input expression – Ausdrücke, die eingefügt werden.

  • Table names – Namen der Tabellen, denen Datensätze hinzugefügt werden.

Delete

Entfernt Datensätze aus einer Tabelle. Attribute:

  • Table name – Name der Tabelle, aus der Datensätze gelöscht werden.

Update

Aktualisiert Datensätze in einer Tabelle. Attribute:

  • Table name – Name der aktualisierten Tabelle.

Merge

Führt eine MERGE-Operation für eine Tabelle aus. Attribute:

  • Full table name – Name der aktualisierten Tabelle.

Unload

Stellt eine COPY-Operation dar, bei der Daten aus einer Tabelle in einer Datei im Stagingbereich exportiert werden. Attribute:

  • Location – Name des Stagingbereichs, in den die Daten gespeichert werden.

Metadatenoperatoren

Einige Abfragen enthalten Schritte, bei denen es sich nicht um Datenverarbeitungsoperationen, sondern um reine Metadaten- bzw. Katalogoperationen handelt. Diese Schritte bestehen aus einem einzigen Operator. Einige Beispiele sind:

DDL- und Transaktionsbefehle

Werden zum Erstellen oder Ändern von Objekten, Sitzungen, Transaktionen usw. verwendet. Normalerweise werden diese Abfragen nicht von einem virtuellen Warehouse verarbeitet und führen zu einem Einzelschrittprofil, das der zugehörigen SQL-Anweisung entspricht. Beispiel:

CREATE DATABASE | SCHEMA | …

ALTER DATABASE | SCHEMA | TABLE | SESSION | …

DROP DATABASE | SCHEMA | TABLE | …

COMMIT

Befehl zur Tabellenerstellung

DDL-Befehl zum Erstellen einer Tabelle. Beispiel:

CREATE TABLE

Ähnlich wie andere DDL-Befehle führen diese Abfragen zu einem Einzelschrittprofil. Sie können jedoch auch Teil eines mehrstufigen Profils sein, z. B. in einer CTAS-Anweisung. Beispiel:

CREATE TABLE … AS SELECT …

Wiederverwendung des Abfrageergebnisses

Eine Abfrage, die das Ergebnis einer vorherigen Abfrage wiederverwendet.

Metadatenbasiertes Ergebnis

Eine Abfrage, deren Ergebnis nur auf Verarbeitung von Metadaten basiert, ohne auf Daten zuzugreifen. Diese Abfragen werden nicht von einem virtuellen Warehouse verarbeitet. Beispiel:

SELECT COUNT(*) FROM …

SELECT CURRENT_DATABASE()

Verschiedene Operatoren
Result

Gibt das Abfrageergebnis zurück. Attribute:

  • List of expressions – Ausdrücke, die generiert wurden.

Typische, von Query Profile identifizierte Abfrageprobleme

In diesem Abschnitt werden einige Probleme beschrieben, die Sie mithilfe von Query Profile identifizieren und beheben können.

„Explodierende“ Joins

Einer der häufigsten Fehler von SQL-Benutzern besteht darin, Tabellen zu verknüpfen, ohne eine Join-Bedingung anzugeben (was zu einem „Kartesischen Produkt“ führt), oder eine Bedingung bereitzustellen, bei der Datensätze einer Tabelle mit mehreren Datensätzen einer anderen Tabelle übereinstimmen. Für solche Abfragen produziert der Operator Join signifikant (oft um Größenordnungen) mehr Tupel, als er verbraucht.

Dies kann beobachtet werden, indem die Anzahl der Datensätze betrachtet wird, die von einem Join-Operator erzeugt wurden. Dies spiegelt sich normalerweise auch in Join-Operatoren wider, die viel Zeit in Anspruch nehmen.

UNION ohne ALL

In SQL können zwei Datasets mit UNION- oder UNION ALL-Konstrukten kombiniert werden. Der Unterschied zwischen beiden besteht darin, dass mit UNION ALL die Eingaben einfach verkettet werden, während UNION dasselbe tut, aber auch eine doppelte Löschung durchführt.

Ein häufiger Fehler ist die Verwendung von UNION, wenn die UNION ALL-Semantik ausreicht. Diese Abfragen werden in Query Profile als UnionAll-Operator mit einem zusätzlichen Aggregate-Operator darüber angezeigt (der eine doppelte Löschung vornimmt).

Abfragen, die zu groß für den Arbeitsspeicher sind

Bei einigen Operationen (z. B. doppelte Löschung bei einem großen Dataset) reicht die für die Server zur Ausführung der Operation zur Verfügung stehende Speicherkapazität möglicherweise nicht aus, um Zwischenergebnisse zu speichern. Als Ergebnis beginnt das Abfrageverarbeitungsmodul, die Daten auf die lokale Festplatte zu übertragen. Wenn der lokale Speicherplatz nicht ausreicht, werden die Überlaufdaten auf Remote-Festplatten gespeichert.

Dieser Überlauf kann sich erheblich auf die Abfrageleistung auswirken (insbesondere, wenn für den Überlauf ein Remote-Datenträger verwendet wird). Um die Auswirkungen zu reduzieren, empfehlen wir Folgendes:

  • Verwenden eines größeren Warehouse (effektives Erhöhen des verfügbaren Arbeitsspeichers bzw. des lokalen Festplattenspeichers für die Operation) und/oder

  • Verarbeiten der Daten in kleineren Batches.

Ineffizientes Verkürzen

Snowflake sammelt umfangreiche Statistiken zu Daten, sodass basierend auf den Abfragefiltern keine unnötigen Teile einer Tabelle gelesen werden. Um diesen Effekt zu erzielen, muss die Reihenfolge der Datenspeicherung mit den Abfragefilterattributen korreliert werden.

Die Effizienz des Verkürzungsprozesses kann durch Vergleichen der Statistiken Partitions scanned und Partitions total in den TableScan-Operatoren überwacht werden. Wenn ersterer Wert ein kleiner Bruchteil des letzteren Werts ist, dann ist das Verkürzen effizient. Wenn nicht, hatte das Verkürzen keine Wirkung.

Das Verkürzen kann natürlich nur für Abfragen hilfreich sein, bei denen tatsächlich eine erhebliche Datenmenge herausgefiltert wird. Wenn in den Verkürzungsstatistiken keine Datenreduktion angezeigt wird, über TableScan jedoch ein Filter-Operator steht, der eine Anzahl von Datensätzen herausfiltert, könnte dies darauf hindeuten, dass für diese Abfrage eine andere Organisation der Daten von Vorteil ist.

Weitere Informationen zum Verkürzen finden Sie unter Grundlegendes zu Tabellenstrukturen in Snowflake.

Kopierverlauf

Auf der Seite Copy History page können Sie die Datenladeaktivitäten der letzten 365 Tage für alle Tabellen in Ihrem Konto anzeigen. Die Seite Copy History liefert eine detaillierte Tabelle der Datenladevorgänge für Ihre Tabellen.

Die Seite Copy History enthält folgende Informationen:

  • Copies Over Time-Diagramm

  • Copies-Tabelle.

Zu den Aktivitäten der Seite Copy History gehören das Massenladen von Daten über COPY INTO und das kontinuierliche Laden von Daten über Pipes.

Der Datenladeverlauf basiert auf der Account Usage-Ansicht COPY_HISTORY. Für diese Ansicht ist ein Zugriff auf die Snowflake-Datenbank erforderlich. Weitere Informationen dazu finden Sie unter „Account Usage für andere Rollen aktivieren“.

Dieser Abschnitt gibt einen kurzen Überblick über die Navigation und Verwendung der Seite Copy History.

Schnittstelle

Beschreibung

Kopien im Zeitverlauf

Das Copies Over Time-Diagramm bietet eine Visualisierung der Datenladevorgänge über einen bestimmten Zeitraum. Standardmäßig zeigt das Diagramm einen Verlauf von 28 Tagen an.

Die Balken im Diagramm repräsentieren die einzelnen Tage. Wählen Sie im Diagramm einen Balken aus, um die Copies-Tabelle nach diesem Tag zu filtern.

Aktivität filtern

Filtern Sie in der rechten oberen Ecke der Seite das Copies Over Time-Diagramm und die Copies-Tabelle. Sie können nach folgenden Kriterien filtern:

  • Zeitbereich

    • Last day

    • Last 7 days

    • Last 28 days (Standard)

    • Last 3 months

    • Last 6 months

    • Last 12 months (Maximum)

    • Custom

  • Status

    • All (Standard)

    • In progress

    • Loaded

    • Failed

    • Partially loaded

    • Skipped

  • Database

    • All (Standard)

    • Eine einzelne Datenbank

  • Schema

    • All (Standard)

    • Ein einzelnes Schema

  • Pipe

    • All (Standard)

    • Eine einzelne Pipe

Warehouse

Für die Seite Copy History ist ein Warehouse erforderlich. Snowsight verwendet das Standard-Warehouse für Ihr Benutzerprofil.

Wenn Sie den erwarteten Inhalt nicht sehen können oder das Warehouse wechseln möchten, können Sie in der rechten oberen Ecke der Seite ein anderes Warehouse auswählen.

Suchen Sie in der rechten oberen rechten Ecke der Copies-Tabelle den Inhalt der folgenden Spalten:

  • File Name

  • Database

  • Schema

  • Table

  • Pipe

Arbeitsblatt öffnen

Öffnen Sie in der rechten oberen Ecke der Tabelle Copies das Arbeitsblatt, das die SQL-Abfrage enthält, die zum Auffüllen der Seite Copy History verwendet wird.

Die SQL-Abfrage basiert auf den von Ihnen ausgewählten Filtern.

Stagingbereichspfad kopieren

Kopieren Sie in jede Zeile der Copies-Tabelle den Pfad zu dem Stagingbereich des entsprechenden Datenladevorgangs.

Die Copies-Tabelle enthält die folgenden Spalten:

  • File Name

  • Database

  • Schema

  • Table

  • Pipe

  • Loaded

  • Size

  • Rows

  • Status

  • Location

Wenn ein Datenladevorgang fehlschlägt, liefert die Copies-Tabelle eine entsprechende Fehlerinformation. Um zu verstehen, warum ein Datenladevorgang fehlgeschlagen ist, bewegen Sie den Mauszeiger in der Statusspalte über den Status Failed dieses Datenladevorgangs.

Um den Kopierverlauf einer bestimmten Tabelle anzuzeigen, wählen Sie den Datenladevorgang in der Copies-Tabelle aus. Sie gelangen zum Kopierverlauf der Tabelle, die Ziel des Datenladevorgangs war.