- Schemas:
Ansicht QUERY_HISTORY¶
Diese Account Usage-Ansicht kann verwendet werden, um den Snowflake-Abfrageverlauf innerhalb der letzten 365 Tage (1 Jahr) nach verschiedenen Dimensionen (Zeitbereich, Sitzung, Benutzer, Warehouse usw.) abzufragen.
Die Ansicht ist in den Schemas ACCOUNT_USAGE und READER_ACCOUNT_USAGE mit folgenden Unterschieden verfügbar:
Die folgenden Spalten sind nur in der Ansicht des Leserkontos verfügbar:
READER_ACCOUNT_NAME
READER_ACCOUNT_DELETED_ON
Alternativ können Sie auch die Information Schema-Tabellenfunktion, auch QUERY_HISTORY genannt, aufrufen. Beachten Sie jedoch, dass die Tabellenfunktion die Ergebnisse auf die Aktivitäten der letzten 7 Tage beschränkt, während die Ansicht Account Usage 365 Tage umfasst. Siehe die Beschreibung der QUERY_HISTORY-Funktion.
Siehe auch:
Abfrageaktivität mit Abfrageverlauf überwachen (Snowsight-Dashboard)
Spalten¶
Die Spalte Nur in Reader Account Usage-Ansichten verfügbar in der folgenden Tabelle zeigt an, ob die Spalte QUERY_HISTORY im Schema READER_ACCOUNT_USAGE verfügbar ist.
Spaltenname |
Datentyp |
Beschreibung |
Nur in Reader Account Usage-Ansichten verfügbar |
---|---|---|---|
|
VARCHAR |
Name des Leserkontos, in dem die SQL-Anweisung ausgeführt wurde. |
✔ |
|
VARCHAR |
Interner/vom System generierter Bezeichner für die SQL-Anweisung. |
✔ |
|
VARCHAR |
Text der SQL-Anweisung. Das Limit beträgt 100K Zeichen. SQL-Anweisungen, die mehr als 100K Zeichen enthalten, werden abgeschnitten. |
|
|
NUMBER |
Interner/systemgenerierter Bezeichner für die Datenbank, die verwendet wurde. |
✔ |
|
VARCHAR |
Datenbank, die bei der Kompilierung im Kontext der Abfrage angegeben wurde. |
✔ |
|
NUMBER |
Interner/vom System generierter Bezeichner für das Schema, die verwendet wurde. |
✔ |
|
VARCHAR |
Schema, das bei der Kompilierung im Kontext der Abfrage angegeben wurde. |
✔ |
|
VARCHAR |
DML, Abfrage usw. Wenn die Abfrage fehlgeschlagen ist, kann der Abfragetyp UNKNOWN lauten. |
|
|
NUMBER |
Sitzung, die die Anweisung ausgeführt hat. |
✔ |
|
VARCHAR |
Benutzer, der die Abfrage ausgegeben hat. |
|
|
VARCHAR |
Rolle, die zum Zeitpunkt der Abfrage in der Sitzung aktiv war. |
✔ |
|
NUMBER |
Interner/vom System generierter Bezeichner für das Warehouse, das verwendet wurde. |
✔ |
|
VARCHAR |
Warehouse, in dem die Abfrage ggf. ausgeführt wurde. |
✔ |
|
VARCHAR |
Größe des Warehouses, als diese Anweisung ausgeführt wurde. |
✔ |
|
VARCHAR |
Typ des Warehouse, als diese Anweisung ausgeführt wurde. |
✔ |
|
NUMBER |
Der Cluster (in einem Multi-Cluster-Warehouse), für den diese Anweisung ausgeführt wurde. |
✔ |
|
VARCHAR |
Abfrage-Tag, das für diese Anweisung über den Sitzungsparameter QUERY_TAG festgelegt wird. |
✔ |
|
VARCHAR |
Ausführungsstatus der Abfrage. Gültige Werte: |
✔ |
|
NUMBER |
Fehlercode, wenn die Abfrage einen Fehler zurückgegeben hat |
✔ |
|
VARCHAR |
Fehlermeldung, wenn die Abfrage einen Fehler zurückgegeben hat |
✔ |
|
TIMESTAMP_LTZ |
Startzeit der Anweisung (in der lokalen Zeitzone) |
✔ |
|
TIMESTAMP_LTZ |
Endzeit der Anweisung (in der lokalen Zeitzone) |
✔ |
|
NUMBER |
Verstrichene Zeit (in Millisekunden) |
✔ |
|
NUMBER |
Anzahl der von dieser Anweisung gescannten Bytes. |
✔ |
|
FLOAT |
Prozentsatz der Daten, die vom lokalen Festplattencache gescannt wurden. Der Wertebereich reicht von 0,0 bis 1,0. Sie können mit 100 multiplizieren, um einen wahren Prozentsatz zu erhalten. |
|
|
NUMBER |
Anzahl der Bytes, die geschrieben wurden (z. B. beim Laden in eine Tabelle). |
|
|
NUMBER |
Anzahl der Bytes, die in ein Ergebnisobjekt geschrieben wurden. Beispielsweise würde |
|
|
NUMBER |
Anzahl der Bytes, die aus einem Ergebnisobjekt gelesen wurden. |
|
|
NUMBER |
Anzahl der Zeilen, die von dieser Anweisung erzeugt wurden. Die Spalte ROWS_PRODUCED wird in einem zukünftigen Release veraltet sein. Der Wert in der Spalte ROWS_PRODUCED spiegelt nicht immer die logische Anzahl der Zeilen wider, die von einer Abfrage betroffenen sind. Snowflake empfiehlt stattdessen die Verwendung der Spalten ROWS_INSERTED, ROWS_UPDATED, ROWS_WRITTEN_TO RESULTS und ROWS_DELETED. |
✔ |
|
NUMBER |
Anzahl der Zeilen, die von der Abfrage eingefügt wurden. |
|
|
NUMBER |
Anzahl der Zeilen, die von der Abfrage aktualisiert wurden. |
|
|
NUMBER |
Anzahl der Zeilen, die von der Abfrage gelöscht wurden. |
|
|
NUMBER |
Anzahl der Zeilen, die während des Datenexports entladen wurden. |
|
|
NUMBER |
Anzahl der Bytes, die von der Abfrage gelöscht wurden. |
|
|
NUMBER |
Anzahl der gescannten Mikropartitionen. |
|
|
NUMBER |
Gesamtzahl der Mikropartitionen aller Tabellen, die in dieser Abfrage enthalten sind. |
|
|
NUMBER |
Datenmenge, die auf eine lokale Festplatte übertragen wurde. |
|
|
NUMBER |
Datenmenge, die auf eine externe Festplatte übertragen wurde. |
|
|
NUMBER |
Datenmenge, die über das Netzwerk gesendete wurde. |
|
|
NUMBER |
Kompilierungszeit (in Millisekunden) |
✔ |
|
NUMBER |
Ausführungsdauer (in Millisekunden) |
✔ |
|
NUMBER |
Zeit (in Millisekunden), die in der Warehouse-Warteschlange auf die Bereitstellung von Warehouse-Computeressourcen gewartet wurde, weil Warehouses erstellt, fortgesetzt oder in der Größe geändert wurden. |
✔ |
|
NUMBER |
Zeit (in Millisekunden), die in der Warehouse-Warteschlange gewartet wurde, bis Computeressourcen im Warehouse repariert waren. |
✔ |
|
NUMBER |
Zeit (in Millisekunden), die in der Warehouse-Warteschlange gewartet wurde, weil das Warehouse durch die aktuelle Abfrage-Workload überlastet war. |
✔ |
|
NUMBER |
Zeit (in Millisekunden), während der eine Sperre durch eine gleichzeitige DML-Operation aktiv war. |
✔ |
|
VARCHAR |
Ziel-Cloudanbieter für Anweisungen, die Daten in eine andere Region und/oder Cloud entladen. |
✔ |
|
VARCHAR |
Zielregion für Anweisungen, die Daten in eine andere Region und/oder Cloud entladen. |
✔ |
|
NUMBER |
Anzahl der Bytes, die mit Anweisungen zum Entladen von Daten aus Snowflake-Tabellen übertragen wurden. |
✔ |
|
VARCHAR |
Quell-Cloudanbieter der Anweisungen, die Daten aus einer anderen Region und/oder Cloud laden. |
✔ |
|
VARCHAR |
Quellregion von Anweisungen, die Daten aus einer anderen Region und/oder Cloud laden. |
✔ |
|
NUMBER |
Anzahl der Bytes, die bei einer Replikationsoperation von einem anderen Konto übertragen wurden. Das Quellkonto kann sich in derselben Region oder in einer anderen Region als das aktuelle Konto befinden. |
✔ |
|
NUMBER |
Zeit (in Millisekunden) für das Auflisten externer Dateien. |
|
|
NUMBER |
Anzahl der Credits, die für Clouddienste verbraucht wurden. Dieser Wert berücksichtigt nicht die Anpassung für Clouddienste und kann daher höher sein als Ihre tatsächlich abgerechneten Credits. Um festzustellen, wie viele Credits tatsächlich in Rechnung gestellt wurden, führen Sie Abfragen auf der Ansicht METERING_DAILY_HISTORY aus. |
✔ |
|
TIMESTAMP_LTZ |
Uhrzeit und Datum (in der Zeitzone UTC) des Löschens des Lesekontos. |
✔ |
|
VARCHAR |
Release-Version im Format |
|
|
NUMBER |
Gesamtzahl, mit der durch diese Abfrage Remotedienste aufgerufen wurden. Weitere wichtige Details dazu finden Sie in den Nutzungshinweisen. |
|
|
NUMBER |
Gesamtzahl der Zeilen, die von dieser Abfrage bei allen Aufrufen an alle Remotedienste gesendet wurden. |
|
|
NUMBER |
Gesamtzahl der Zeilen, die von dieser Abfrage bei allen Aufrufen von allen Remotediensten empfangen wurden. |
|
|
NUMBER |
Gesamtzahl der Bytes, die von dieser Abfrage bei allen Aufrufen an alle Remotedienste gesendet wurden. |
|
|
NUMBER |
Gesamtzahl der Bytes, die von dieser Abfrage bei allen Aufrufen von allen Remotediensten empfangen wurden. |
|
|
NUMBER |
Der ungefähre Prozentsatz der aktiven Computeressourcen im Warehouse für diese Abfrageausführung. |
|
|
BOOLEAN |
Gibt an, ob die Abfrage von einem Client generiert wurde. |
|
|
NUMBER |
Anzahl der vom Abfragebeschleunigungsdienst gescannten Bytes. |
|
|
NUMBER |
Anzahl der vom Abfragebeschleunigungsdienst gescannten Partitionen. |
|
|
NUMBER |
Oberes Limit des Skalierungsfaktors, der für eine Abfrage von Vorteil wäre. |
|
|
NUMBER |
ID der Transaktion, die die Anweisung enthält, oder 0, wenn die Anweisung nicht innerhalb einer Transaktion ausgeführt wird. |
|
|
NUMBER |
Zeit (in Millisekunden), die bei Aufruf einer memoisierbaren Funktion bis zum Abschluss der zwischengespeicherten Suche benötigt wird. |
|
|
VARCHAR |
Gibt an, ob die Abfrage von einer Rolle vom Typ APPLICATION, DATABASE_ROLE oder ROLE ausgeführt wurde. |
|
|
VARCHAR |
Der Hash-Wert wird auf der Grundlage des kanonisierten SQL-Textes berechnet. |
|
|
NUMBER |
Die Version der Logik, die zur Berechnung von |
|
|
VARCHAR |
Der Hash-Wert, der auf Grundlage der parametrisierten Abfrage berechnet wird. |
|
|
NUMBER |
Die Version der Logik, die zur Berechnung von |
|
|
VARCHAR |
Eine JSON-formatierte Zeichenfolge, die drei Felder zu den in der Abfrage ausgewerteten Sekundärrollen enthält: eine Liste der Sekundärrollen oder |
|
|
NUMBER |
Anzahl der Zeilen, die in ein Ergebnisobjekt geschrieben wurden. Für CREATE TABLE AS SELECT (CTAS) und alle DML-Operationen ist dieses Ergebnis |
|
|
NUMBER |
Gesamtausführungszeit (in Millisekunden) für Abfragewiederholungen, die durch behebbare Fehler verursacht wurden. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten. |
|
|
VARIANT |
Array von Fehlermeldungen für behebbare Fehler. Das Array enthält eine Fehlermeldung für jeden Abfrageversuch. Wird die Abfrage nicht wiederholt, ist das Array leer. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten. |
|
|
NUMBER |
Gesamtausführungszeit (in Millisekunden) für Abfragewiederholungen, die durch nicht behebbare Fehler verursacht wurden. Weitere Informationen dazu finden Sie unter Abfragewiederholungsspalten. |
Nutzungshinweise¶
Allgemeines¶
Die Latenzzeit der Ansicht kann bis zu 45 Minuten betragen.
Die Werte für die Spalten EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES und EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES werden von vielen Faktoren beeinflusst, darunter:
Anzahl der externen Funktionen in der Anweisung SQL.
Anzahl der Zeilen pro Batch, die an jeden Remotedienst gesendet werden.
Anzahl der Wiederholungen aufgrund vorübergehender Fehler (z. B. weil eine Antwort nicht innerhalb der erwarteten Zeit empfangen wurde).
Abfragewiederholungsspalten¶
Es kann sein, dass eine Abfrage ein oder mehrere Male wiederholt werden muss, um erfolgreich abgeschlossen zu werden. Es kann mehrere Ursachen geben, die zu einer Wiederholung einer Abfrage führen. Einige dieser Ursachen sind behebbar, d. h. ein Benutzer kann Änderungen vornehmen, um Abfragewiederholungen für eine bestimmte Abfrage zu reduzieren oder zu vermeiden. Wenn beispielsweise eine Abfrage aufgrund von fehlendem Arbeitsspeicher wiederholt wird, kann das Problem durch Änderung der Warehouse-Einstellungen behoben werden.
Einige Abfragewiederholungen werden durch einen Fehler verursacht, der nicht behebbar ist. Das heißt, ein Benutzer kann keine Änderung vornehmen, um die Wiederholung der Abfrage zu verhindern. So kann beispielsweise die Abfragewiederholung durch einen Netzwerkausfall verursacht werden. In diesem Fall gibt es keine Änderung an der Abfrage oder an dem ausführenden Warehouse, mit der sich die Abfragewiederholung verhindern lässt.
Die Spalten QUERY_RETRY_TIME, QUERY_RETRY_CAUSE und FAULT_HANDLING_TIME können Ihnen helfen, Abfragen zu optimieren, die wiederholt werden, und Schwankungen in der Abfrageleistung besser zu verstehen.
Hybridtabellen¶
Die folgenden Hinweise beziehen sich auf die Ausführung von Abfragen auf Hybridtabellen unter Verwendung von QUERY_HISTORY-Ansichten.
Für Abfragen mit kurzer Ausführungszeit, die ausschließlich auf Hybridtabellen angewendet werden, werden in dieser Ansicht und in QUERY_HISTORY (Information Schema-Tabellenfunktion) keine Datensätze mehr generiert. Um solche Abfragen zu überwachen, verwenden Sie AGGREGATE_QUERY_HISTORY. Mit dieser Ansicht können Sie operative Workloads mit hohem Durchsatz für Trends und Themen leichter überwachen.
Auch für Abfragen mit kurzer Ausführungszeit, die ausschließlich auf Hybridtabellen angewendet werden, wird kein Query Profile mehr bereitgestellt, das Sie in der Snowsight prüfen können.
Abfragen auf Hybridtabelle generieren nur dann einen Datensatz in der Ansicht QUERY_HISTORY und ein Query Profile, wenn eine der folgenden Bedingungen erfüllt ist:
Eine Abfrage wird gegen einen anderen Tabellentyp als den Hybridtabellentyp ausgeführt. Diese Bedingung stellt sicher, dass es keine Verhaltensänderung für bestehende Nicht-Unistore-Workloads gibt.
Eine Abfrage schlägt mit einem EXECUTION_STATUS von
failed_with_incident
fehl (siehe QUERY_HISTORY). Diese Bedingung stellt sicher, dass Sie die fehlgeschlagene Abfrage untersuchen und melden können, um Unterstützung zu erhalten.Die Ausführung einer Abfrage dauert länger als etwa 500 Millisekunden. Diese Bedingung stellt sicher, dass Sie Leistungsprobleme bei langsamen Abfragen untersuchen können.
Die Größe des Abfrageergebnisses ist zu groß.
Eine Abfrage ist mit einer Snowflake-Transaktion verbunden.
Eine Abfrage enthält eine Systemfunktion mit Nebeneffekten.
Eine Abfrage ist nicht einer der folgenden Anweisungstypen: SELECT, INSERT, DELETE, UPDATE, MERGE.
Eine Abfrage wird von SnowSQL, Snowsight oder Classic Console aus ausgeführt. Diese Bedingung stellt sicher, dass Sie manuell ein vollständiges Query Profile erstellen können, um Leistungsprobleme für eine bestimmte Abfrage zu untersuchen, auch wenn diese nicht als langlaufend eingestuft ist.
Auch wenn eine Abfrage keine der oben genannten Bedingungen erfüllt, können Abfragen regelmäßig stichprobenartig abgerufen werden, um einen Datensatz in der QUERY_HISTORY-Ansicht und ein Query Profile zu generieren und Sie so bei Ihren Untersuchungen zu unterstützen.
Befehle PUT und GET¶
Bei den Befehlen PUT und GET bedeutet ein EXECUTION_STATUS von success
in der QUERY_HISTORY nicht, dass Datendateien erfolgreich hoch- oder heruntergeladen wurden. Stattdessen zeigt der Status an, dass Snowflake die Autorisierung erhalten hat, mit dem Datentransfer fortzufahren.