Snowflake Abfrageverlauf
Einführung
Die Nachverfolgung und Überprüfung der Datenbankaktivität ist ein entscheidender Bestandteil der Sicherung und Optimierung jedes Data Warehouse. Snowflake ist eine beliebte Cloud-Datenplattform, die leistungsstarke Werkzeuge zur Verfügung stellt, um detaillierte Informationen über Abfragen Ihres Kontos zu erhalten. In diesem Artikel werden wir die Ansicht des Snowflake Abfrageverlaufs und die QUERY_HISTORY Tabellenfunktionen im Detail untersuchen. Sie lernen, wie Sie diese Funktionen nutzen können, um wertvolle Einblicke in Abfrageaktivitäten, Leistung und Zugriffsmuster zu gewinnen.
Was ist die Snowflake query_history Ansicht?
Die query_history Ansicht in Snowflake zeigt alle in Ihrem Konto ausgeführten Abfragen. Sie ist schreibgeschützt. Die Informationen sind für die letzten 7 Tage für die Standard Edition verfügbar. Für die Enterprise Edition und höher sind sie für die letzten 14 Tage verfügbar.
Diese Informationen sind für die letzten 7 Tage für die Standard Edition und 14 Tage für die Enterprise Edition und höher verfügbar. Sie liefert detaillierte Informationen über jede Abfrage, einschließlich:
Abfragetext
Ausführungsstatus (z.B. abgeschlossen, fehlgeschlagen, läuft)
Abgefragte Objekte (Tabellen, Ansichten, etc.)
Benutzer, der die Abfrage ausgeführt hat
Abfragebeginn- und -endzeit
Anzahl der zurückgegebenen Zeilen
Gesprächene Bytes
Und mehr
Snowflake befüllt diese Ansicht automatisch und erfordert keine Einrichtung oder Konfiguration Ihrerseits. Sie können diese Snowflake-Zugriffsprüfungsansicht wie jede andere Snowflake-Ansicht abfragen.
Beispiel für das Abfragen von query_history
Hier ist ein grundlegendes Beispiel für die Verwendung der query_history Ansicht. Diese Ansicht zeigt die 10 zuletzt vom aktuellen Benutzer ausgeführten Abfragen an.
SELECT query_text, start_time, execution_status FROM query_history WHERE user_name = current_user() ORDER BY start_time DESC LIMIT 10;
Diese Abfrage wählt den SQL-Text, die Startzeit und den Ausführungsstatus von Abfragen aus der query_history Ansicht. Sie filtert nur die vom aktuellen Benutzer ausgeführten Abfragen, sortiert die Ergebnisse mit den neuesten Abfragen zuerst und begrenzt die Ausgabe auf 10 Zeilen.
Die QUERY_HISTORY Tabellenfunktionen
Zusätzlich zur query_history Ansicht bietet Snowflake eine Reihe von Tabellenfunktionen zum Abrufen von Abfrageverlaufsdaten. Diese Funktionen ermöglichen es Ihnen, Abfrageverläufe länger als den 7- oder 14-Tage-Aufbewahrungszeitraum der Ansicht abzurufen.
Die QUERY_HISTORY Funktionen gibt es in drei Varianten:
QUERY_HISTORY() – Liefert den 14-tägigen Abfrageverlauf in Mikro-Partition-Struktur für optimierte Abfragen
QUERY_HISTORY_BY_SESSION() – Liefert den 14-tägigen Abfrageverlauf mit zusätzlichen Sitzungsdetails
QUERY_HISTORY_BY_USER() – Liefert den 14-tägigen Abfrageverlauf mit zusätzlichen Benutzerdetails
Beispiel für die Verwendung von QUERY_HISTORY
Angenommen, Sie möchten die Top 5 Benutzer finden, die in den letzten 14 Tagen die meisten Daten gescannt haben. Sie könnten diese Snowflake-Tabellenfunktion wie folgt verwenden:
SELECT user_name, sum(bytes_scanned) as total_bytes_scanned FROM TABLE(QUERY_HISTORY()) WHERE start_time >= dateadd('day', -14, current_timestamp()) GROUP BY user_name ORDER BY total_bytes_scanned DESC LIMIT 5;
Diese Abfrage ruft den Abfrageverlauf der letzten 14 Tage mithilfe der QUERY_HISTORY Funktion ab. Sie summiert die bytes_scanned Spalte für jeden Benutzer, sortiert die Ergebnisse absteigend nach insgesamt gescannten Bytes und nimmt die Top 5 Benutzer.
Filtern von Abfrageverlaufsdaten
Die query_history Ansicht und die QUERY_HISTORY Funktionen unterstützen eine Vielzahl von SQL-Prädikaten zum Filtern der Ergebnisse. Einige häufig verwendete Prädikate sind:
query_id – Die eindeutige Kennung einer Abfrage
query_type – Der Typ der Abfrage (z.B. SELECT, INSERT, CREATE TABLE)
user_name – Der Name des Benutzers, der die Abfrage ausgeführt hat
start_time und end_time – Die Zeitstempel, wann die Abfrage gestartet und beendet wurde
execution_status – Der Status der Abfrage (z.B. RUNNING, COMPLETED, FAILED)
database_name, schema_name, table_name – Die Namen der von der Abfrage angesprochenen Datenbankobjekte
Hier ist ein Beispiel, das alle fehlgeschlagenen Abfragen findet, die auf eine bestimmte Tabelle in den letzten Tag zugegriffen haben:
SELECT * FROM query_history WHERE execution_status = 'FAILED' AND table_name = 'my_table' AND start_time >= dateadd('day', -1, current_timestamp());
Anwendungsfälle für den Abfrageverlauf
Die Abfrageverlaufsfunktion von Snowflake hat viele wertvolle Anwendungsfälle, darunter:
Auditing und Sicherheit
Durch die Verfolgung aller ausgeführten Abfragen in Ihrem Snowflake-Konto ermöglicht Ihnen der query_history:
Überwachung verdächtiger Aktivitäten oder unberechtigter Zugriffe
Untersuchung von Sicherheitsvorfällen
Sicherstellung der Einhaltung von Datenverwaltungsvorschriften
Bereitstellung eines Prüfpfades für regulatorische Anforderungen
Abfrageoptimierung
Abfrageverlaufsdaten können Ihnen helfen, die Abfrageleistung zu optimieren, indem Sie:
Die ressourcenintensivsten Abfragen identifizieren
Abfragemuster im Laufe der Zeit analysieren
Abfragefehler oder -timeouts erkennen und beheben
Strategien für Indexierung, Clusterbildung und Partitionierung optimieren
Verrechnung und Kostenzuordnung
Die gescannten Bytes und Ausführungszeitdaten im Abfrageverlauf ermöglichen Ihnen:
Snowflake-Kosten bestimmten Benutzern, Teams oder Projekten zuzuordnen
Verrechnungs- oder Showback-Modelle zu implementieren
Abfrageeffizienz zu fördern und unkontrollierte Kosten zu begrenzen
Sicherer Zugriff auf den Abfrageverlauf
Beachten Sie, dass die query_history Ansicht und die QUERY_HISTORY Funktionen standardmäßig nur von der ACCOUNTADMIN Rolle zugänglich sind. Um anderen Rollen den Zugriff zu gewähren, müssen Sie den Befehl GRANT IMPORTED PRIVILEGES verwenden.
Seien Sie vorsichtig, wenn Sie den Zugriff auf den Abfrageverlauf gewähren, da dieser sensible Informationen enthalten kann. Erwägen Sie die Erstellung einer separaten Rolle mit eingeschränkten Berechtigungen speziell für Prüfungs- und Überwachungszwecke.
Zusammenfassung und Schlussfolgerung
Die Abfrageverlaufsfunktion von Snowflake bietet wesentliche Einblicke in die von Benutzern gegen Ihr Konto ausgeführten Abfragen. Sie können die query_history Ansicht und die QUERY_HISTORY Tabellenfunktionen für verschiedene Zwecke nutzen. Dazu gehören die Verbesserung der Prüfung, die Optimierung der Abfrageleistung und die Nachverfolgung der Nutzungskosten. Darüber hinaus bieten diese Tools auch weitere Vorteile.
Die in diesem Artikel behandelten Beispiele illustrieren nur einige der vielen Möglichkeiten, wie Sie Erkenntnisse aus Abfrageverlaufsdaten gewinnen können. Wenn Sie weiterforschen, überlegen Sie, wie diese Informationen die Sicherheit, Effizienz und Governance in Ihrer eigenen Snowflake-Umgebung verbessern könnten.
DataSunrise bietet benutzerfreundliche und flexible Werkzeuge zur Verwaltung von Snowflake-Sicherheit, Auditregeln, dynamischer Datenmaskierung und Compliance. Besuchen Sie unser Team für eine Online-Demo, um diese Fähigkeiten in Aktion zu sehen!