
Snowflake-Abfrageverlauf

Einführung
Das Verfolgen und Auditieren der Datenbankaktivitäten ist ein entscheidender Bestandteil der Sicherung und Optimierung jedes Data Warehouse. Snowflake ist eine beliebte Cloud-Datenplattform, die leistungsstarke Werkzeuge bereitstellt, um detaillierte Informationen über Abfragen in Ihrem Konto zu erhalten. In diesem Artikel werden wir die Snowflake-Abfrageverlaufsansicht und die Tabelle-Funktionen QUERY_HISTORY 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-Abfrageverlaufsansicht?
Die query_history-Ansicht in Snowflake zeigt alle in Ihrem Konto ausgeführten Abfragen an. 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 bietet detaillierte Informationen zu jeder Abfrage, darunter:
Abfragetext
Ausführungsstatus (z.B. abgeschlossen, fehlgeschlagen, laufend)
Abgefragte Objekte (Tabellen, Ansichten usw.)
Benutzer, der die Abfrage ausgeführt hat
Abfragebeginn und -endzeit
Anzahl der zurückgegebenen Zeilen
Gesamtmenge der gescannten Bytes
Und mehr
Snowflake füllt diese Ansicht automatisch und erfordert keine Einrichtung oder Konfiguration Ihrerseits. Sie können diese Snowflake-Zugriffsüberwachungsansicht wie jede andere Snowflake-Ansicht abfragen.
Beispiel einer Abfrage an die query_history-Ansicht
Hier ist ein einfaches 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 von Abfragen aus der query_history-Ansicht aus. Sie filtert nur diejenigen Abfragen heraus, die vom aktuellen Benutzer ausgeführt wurden, sortiert die Ergebnisse nach 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 an. Diese Funktionen ermöglichen es Ihnen, Abfrageverläufe weiter zurück in der Zeit abzurufen als der 7- oder 14-Tage-Aufbewahrungszeitraum der Ansicht.
Die QUERY_HISTORY-Funktionen gibt es in drei Varianten:
QUERY_HISTORY() – Gibt den 14-tägigen Abfrageverlauf in einer Mikro-Partition-Struktur für optimierte Abfragen zurück
QUERY_HISTORY_BY_SESSION() – Gibt den 14-tägigen Abfrageverlauf mit zusätzlichen Sitzungsebene-Details zurück
QUERY_HISTORY_BY_USER() – Gibt den 14-tägigen Abfrageverlauf mit zusätzlichen Benutzerebene-Details zurück
Beispiel der Nutzung 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 die 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 für die letzten 14 Tage unter Verwendung der QUERY_HISTORY-Funktion ab. Sie summiert die Spalte bytes_scanned für jeden Benutzer, ordnet die Ergebnisse nach den insgesamt gescannten Bytes absteigend und zeigt die Top 5 Benutzer an.
Filterung der Abfrageverlaufsresultate
Die query_history-Ansicht und die QUERY_HISTORY-Funktionen unterstützen eine breite Palette von SQL-Prädikaten zur Filterung der Ergebnisse. Einige häufig verwendete Prädikate umfassen:
query_id – Die eindeutige Kennung einer Abfrage
query_type – Der Abfragetyp (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 abgerufenen Datenbankobjekte
Hier ist ein Beispiel, das alle fehlgeschlagenen Abfragen findet, die in den letzten 24 Stunden auf eine bestimmte Tabelle 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:
Überprüfung und Sicherheit
Durch die Verfolgung aller Abfragen, die gegen Ihr Snowflake-Konto ausgeführt wurden, ermöglicht Ihnen query_history:
Verdächtige Aktivitäten oder unbefugte Zugriffe zu überwachen
Sicherheitsvorfälle zu untersuchen
Einhaltung der Datenverwaltungspolitik zu gewährleisten
Einen Audit-Trail für regulatorische Anforderungen bereitzustellen
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 Indizierung, Clustering und Partitionierung abstimmen
Kostenumlage und Kostenverteilung
Die in den Abfrageverlaufsdaten enthaltenen Informationen zu gescannten Bytes und Ausführungszeit ermöglichen es Ihnen:
Snowflake-Kosten bestimmten Benutzern, Teams oder Projekten zuzuordnen
Umlage- oder Kostentransparenzmodelle zu implementieren
Abfrageeffizienz zu fördern und ausufernde Kosten zu begrenzen
Sicherer Zugriff auf den Abfrageverlauf
Beachten Sie, dass standardmäßig nur die ACCOUNTADMIN-Rolle Zugriff auf die query_history-Ansicht und die QUERY_HISTORY-Funktionen hat. Um anderen Rollen 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 er möglicherweise vertrauliche Informationen enthält. Erwägen Sie, eine separate Rolle mit eingeschränkten Berechtigungen speziell für Audit- und Überwachungszwecke zu erstellen.
Zusammenfassung und Fazit
Die Abfrageverlaufsfunktion von Snowflake bietet eine wesentliche Sichtbarkeit der Abfragen, die Benutzer gegen Ihr Konto ausführen. Sie können die query_history-Ansicht und die QUERY_HISTORY-Tabellenfunktionen für verschiedene Zwecke verwenden. Dazu gehören die Verbesserung der Überprüfung, die Optimierung der Abfrageleistung und die Nachverfolgung von Nutzungskosten. Darüber hinaus bieten diese Werkzeuge noch weitere Vorteile.
Die in diesem Artikel behandelten Beispiele veranschaulichen nur einige der vielen Möglichkeiten, wie Sie Erkenntnisse aus den Abfrageverlaufsdaten gewinnen können. Während Sie weiter forschen, überlegen Sie, wie diese Informationen die Sicherheit, Effizienz und Governance in Ihrer eigenen Snowflake-Umgebung verbessern können.
DataSunrise bietet benutzerfreundliche und flexible Werkzeuge zur Verwaltung der Snowflake-Sicherheit, Auditregeln, dynamischen Datenmaskierung und Compliance. Besuchen Sie unser Team für eine Online-Demo, um diese Fähigkeiten in Aktion zu sehen!