Snowflake-Abfrageverlauf

Einleitung
Die Nachverfolgung und Überprüfung von Datenbankaktivitäten ist ein wesentlicher 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 in Ihrem Konto zu erhalten. In diesem Artikel werden wir die Snowflake-Abfrageverlauf-Ansicht und die QUERY_HISTORY-Tabellenfunktionen im Detail untersuchen. Sie werden 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 an. Sie ist schreibgeschützt. Die Informationen stehen bei der Standard Edition für die letzten 7 Tage zur Verfügung. Bei der Enterprise Edition und darüber hinaus sind sie für die letzten 14 Tage verfügbar.
Diese Informationen bieten detaillierte Angaben zu jeder Abfrage, darunter:
Abfragetext
Ausführungsstatus (z. B. abgeschlossen, fehlgeschlagen, laufend)
Abgefragte Objekte (Tabellen, Ansichten usw.)
Benutzer, der die Abfrage ausgeführt hat
Start- und Endzeit der Abfrage
Anzahl der zurückgegebenen Zeilen
Scandatenmenge in Bytes
Und mehr
Snowflake füllt diese Ansicht automatisch aus und erfordert keine Einrichtung oder Konfiguration Ihrerseits. Sie können diese Snowflake-Zugriffsprüfungsansicht genau wie jede andere Snowflake-Ansicht abfragen.
Beispiel für das Abfragen von query_history
Hier ist ein grundlegendes Beispiel für die Nutzung 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 der Abfragen aus der query_history-Ansicht aus. Sie filtert nur die Abfragen, die vom aktuellen Benutzer ausgeführt wurden, sortiert die Ergebnisse mit den neuesten Abfragen zuerst und begrenzt die Ausgabe auf 10 Zeilen.
Die QUERY_HISTORY-Tabellenfunktionen
Neben der query_history-Ansicht stellt Snowflake eine Reihe von Tabellenfunktionen zum Abrufen von Abfrageverlaufsdaten bereit. Diese Funktionen ermöglichen es Ihnen, Abfrageverlaufsdaten weiter zurück in der Zeit abzurufen als die 7- bzw. 14-Tage-Aufbewahrungsdauer der Ansicht.
Die QUERY_HISTORY-Funktionen gibt es in drei Varianten:
QUERY_HISTORY() – Gibt 14 Tage Abfrageverlauf in Mikro-Partition-Struktur für optimierte Abfragen zurück
QUERY_HISTORY_BY_SESSION() – Gibt 14 Tage Abfrageverlauf mit zusätzlichen Details auf Sitzungsebene zurück
QUERY_HISTORY_BY_USER() – Gibt 14 Tage Abfrageverlauf mit zusätzlichen Details auf Benutzerebene zurück
Beispiel für die Verwendung von QUERY_HISTORY
Angenommen, Sie möchten die Top 5 Benutzer ermitteln, die in den letzten 14 Tagen die meisten Daten gescannt haben. So könnten Sie die Snowflake-Tabellenfunktion 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 Spalte bytes_scanned für jeden Benutzer, sortiert die Ergebnisse absteigend nach der insgesamt gescannten Datenmenge und gibt die Top 5 Benutzer aus.
Filtern der Abfrageverlaufs-Ergebnisse
Die query_history-Ansicht und die QUERY_HISTORY-Funktionen unterstützen eine Vielzahl von SQL-Prädikaten zum Filtern der Ergebnisse. Einige gängige Prädikate, die Sie möglicherweise verwenden, 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 Datenbankobjekte, auf die die Abfrage zugegriffen hat
Hier ein Beispiel, das alle fehlgeschlagenen Abfragen findet, die in den vergangenen Tag eine bestimmte Tabelle abgefragt 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 Snowflake-Abfrageverlaufsfunktion hat viele wertvolle Anwendungsfälle, darunter:
Prüfung und Sicherheit
Durch die Nachverfolgung aller gegen Ihr Snowflake-Konto ausgeführten Abfragen ermöglicht der query_history-Abfrageverlauf:
Überwachung auf verdächtige Aktivitäten oder unbefugte Zugriffe
Untersuchung von Sicherheitsvorfällen
Sicherstellung der Einhaltung von Datenverwaltungsrichtlinien
Bereitstellung eines Prüfpfads für regulatorische Anforderungen
Abfrageoptimierung
Die Daten des Abfrageverlaufs können Ihnen helfen, die Leistung von Abfragen zu optimieren, indem sie:
die ressourcenintensivsten Abfragen identifizieren
Abfragemuster im Zeitverlauf analysieren
Fehler oder Zeitüberschreitungen bei Abfragen erkennen und beheben
Indexierungs-, Clustering- und Partitionierungsstrategien optimieren
Kostenumlage und Kostenzuordnung
Die Daten zu gescannten Bytes und Ausführungszeiten im Abfrageverlauf ermöglichen es Ihnen,:
Snowflake-Kosten bestimmten Benutzern, Teams oder Projekten zuzuordnen
Chargeback- oder Showback-Modelle zu implementieren
Die Abfrageeffizienz zu fördern und eskalierende Kosten zu begrenzen
Sichere und zentralisierte Prüfung mit DataSunrise
Während Snowflake hervorragende integrierte Verlaufsfunktionen bietet, ermöglicht das Sichern und Analysieren von Abfragen auf der Proxy-Ebene deutlich mehr Kontrolle. Mit DataSunrise können Sie:
- Alle Abfragen in Snowflake in Echtzeit überwachen und protokollieren
- Dynamisches Maskieren je nach Abfragetyp, Benutzer oder Objekt anwenden
- Sicherheitsrichtlinien durchsetzen, ohne Snowflake-Rollen zu ändern
- Abfrageaktivitäten mit Benutzerverhalten und Zugriffsregeln korrelieren
Dies ist besonders nützlich in Umgebungen mit strengen Compliance-Anforderungen, in denen die Prüfungsübersicht über die internen Metadaten von Snowflake hinausgehen muss.
Best Practice: Gewähren eines sicheren Zugriffs auf den Abfrageverlauf
Anstatt vollen ACCOUNTADMIN-Zugriff zu gewähren, erstellen Sie eine Rolle mit eingeschränkten Berechtigungen, um historische Prüfungsabfragen auszuführen:
-- Erstellen einer schreibgeschützten Prüfrolle CREATE ROLE audit_viewer; -- Gewähren der Nutzung der SNOWFLAKE-Datenbank GRANT IMPORTED PRIVILEGES ON DATABASE snowflake TO ROLE audit_viewer; -- Optional: Zuweisung an Überwachungsbenutzer GRANT ROLE audit_viewer TO USER readonly_analyst;
Diese Konfiguration schränkt den Zugriff ein, ermöglicht jedoch gleichzeitig eine sichere Einsicht in Ihren Abfrageverlauf. Kombinieren Sie dies mit der Prüfungs-Ebene von DataSunrise, um eine manipulationssichere Überwachung sicherzustellen.
Zusammenfassung und Fazit
Die Abfrageverlaufsfunktion von Snowflake bietet essenzielle Einblicke in die Abfragen, die von Benutzern gegen Ihr Konto ausgeführt werden. Sie können die query_history-Ansicht und die QUERY_HISTORY-Tabellenfunktionen für verschiedene Zwecke nutzen. Dazu gehören die Verbesserung der Prüfprozesse, die Optimierung der Abfrageleistung und die Verfolgung von Nutzungskosten. Darüber hinaus bieten diese Tools noch weitere Vorteile.
Die in diesem Artikel behandelten Beispiele veranschaulichen nur einige der vielen Möglichkeiten, wie Sie wertvolle Erkenntnisse aus den 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 stellt benutzerfreundliche und flexible Werkzeuge zur Verwaltung der Snowflake-Sicherheit, Prüfregeln, dynamischem Datenmaskieren und Compliance bereit. Besuchen Sie unser Team für eine Online-Demo, um diese Fähigkeiten in Aktion zu erleben!
