DataSunrise sponsert AWS re:Invent 2024 in Las Vegas, bitte besuchen Sie uns am Stand #2158 von DataSunrise

Snowflake Abfrageverlauf

Snowflake Abfrageverlauf

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!

Nächste

Redshift und Athena

Redshift und Athena

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Allgemeine Informationen:
[email protected]
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
[email protected]