Workload von Hybridtabellen überwachen¶
Unistore-Workloads, die Hybridtabelle nutzen, unterscheiden sich möglicherweise von vielen analytischen Workloads, die Sie in Snowflake ausführen. Ihre Workloads können beispielsweise weniger einmalige Abfragen enthalten, die weniger Zeit für die Ausführung benötigen und häufiger ausgeführt werden. Sie haben mehrere Optionen, um Ihre Workloads zu überwachen.
Workloads mit Account Usage-Ansichten überwachen¶
Verwenden Sie Ansicht AGGREGATE_QUERY_HISTORY, um Ihre operativen Workloads effektiv zu überwachen. Mit dieser Ansicht können Sie den Zustand Ihres Workloads überwachen, Probleme diagnostizieren und Optimierungsmöglichkeiten erkennen. Die AGGREGATE_QUERY_HISTORY-Ansicht aggregiert Abfrageausführungsstatistiken für eine wiederholte parametrisierte Abfrage über ein Zeitintervall, sodass es einfacher und effizienter ist, Muster in Ihren Workloads und Abfragen im Laufe der Zeit zu erkennen. Beachten Sie, dass alle Snowflake-Workloads und -Abfragen in der Ausgabe dieser Ansicht kombiniert werden.
Die Ansicht AGGREGATE_QUERY_HISTORY hilft Ihnen, die folgenden Fragen zu Ihren Workloads zu beantworten:
Wie viele Operationen werden pro Sekunde in meinem virtuellen Warehouse ausgeführt?
Welche Abfragen in meinem Workload benötigen insgesamt die meiste Zeit oder verbrauchen die meisten Ressourcen?
Hat sich die Performance einer bestimmten Abfrage im Laufe der Zeit wesentlich verändert?
Um die Performance und Effizienz Ihres Workloads zu verbessern, werden einzelne Ausführungen von Operationen mit geringer Latenz (unter einer Sekunde) weder in der QUERY_HISTORY-Ansicht gespeichert, noch generieren sie ein eindeutiges Abfrageprofil (Query Profile). Stattdessen werden die aggregierten Statistiken für wiederholte Ausführungen dieser Abfrage in der Ansicht AGGREGATE_QUERY_HISTORY zurückgegeben. Sie können auch ein gesampeltes Query Profile für die Abfrage über ein ausgewähltes Zeitintervall anzeigen.
Allgemeinen Zustand des Workloads überwachen¶
Verwenden Sie die Ansicht AGGREGATE_QUERY_HISTORY, um den Gesamtdurchsatz und die Parallelität Ihres Workloads zu überwachen und um unerwartete Spitzen oder Rückgänge in Ihren Workloads zu untersuchen. Beispiel:
SELECT
interval_start_time
, SUM(calls) as execution_count
, SUM(calls) / 60 as queries_per_second
, COUNT(DISTINCT session_id) as unique_sessions
, COUNT(user_name) as unique_users
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
GROUP BY
interval_start_time
;
Sie können auch den aggregierten Abfrageverlauf (Query History) verwenden, um potenzielle Probleme mit Fehlern, Warteschlangen, Blockieren durch Sperren oder Drosselung zu überwachen. Beispiel:
WITH time_issues AS
(
SELECT
interval_start_time
, SUM(transaction_blocked_time:"SUM") as transaction_blocked_time
, SUM(queued_provisioning_time:"SUM") as queued_provisioning_time
, SUM(queued_repair_time:"SUM") as queued_repair_time
, SUM(queued_overload_time:"SUM") as queued_overload_time
, SUM(hybrid_table_requests_throttled_count) as hybrid_table_requests_throttled_count
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
GROUP BY ALL
),
errors AS
(
SELECT
interval_start_time
, SUM(value:"count") as error_count
FROM
(
SELECT
a.interval_start_time
,e.*
FROM
snowflake.account_usage.aggregate_query_history a,
TABLE(flatten(input => errors)) e
WHERE TRUE
AND interval_start_time > $START_DATE
AND interval_start_time < $END_DATE
)
GROUP BY ALL
)
SELECT
time_issues.interval_start_time
, error_count
, transaction_blocked_time
, queued_provisioning_time
, queued_repair_time
, queued_overload_time
, hybrid_table_requests_throttled_count
FROM
time_issues FULL JOIN errors ON errors.interval_start_time = time_issues.interval_start_time
;
In der Regel sollten diese Kennzahlen niedrig bleiben. Wenn Sie einen unerwarteten Spitzenwert feststellen, sollten Sie die Ursache untersuchen.
Wiederholte Abfragen identifizieren und untersuchen¶
Sie können sich dafür entscheiden, die Leistung von häufig ausgeführten Abfragen zu optimieren oder zu untersuchen, um die Effizienz Ihres Workload zu verbessern. Sie können die Ansicht AGGREGATE_QUERY_HISTORY verwenden, um die wichtigsten Abfragen eines Workloads nach Ausführungsanzahl zu identifizieren. Beispiel:
SELECT
query_parameterized_hash
, any_value(query_text)
, SUM(calls) as execution_count
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
GROUP BY
query_parameterized_hash
ORDER BY execution_count DESC
;
Sie können sich die Kennzahlen für die langsamsten Abfragen anzeigen lassen. Beispiel:
SELECT
query_parameterized_hash
, any_value(query_text)
, SUM(total_elapsed_time:"sum"::NUMBER) / SUM (calls) as avg_latency
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND warehouse_name = '<MY_WAREHOUSE>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
GROUP BY
query_parameterized_hash
ORDER BY avg_latency DESC
;
Sie können die Leistung einer bestimmten Abfrage im Laufe der Zeit analysieren, um einen Einblick in Trends bei den Latenzen zu erhalten. Beispiel:
SELECT
interval_start_time
, total_elapsed_time:"avg"::number avg_elapsed_time
, total_elapsed_time:"min"::number min_elapsed_time
, total_elapsed_time:"p90"::number p90_elapsed_time
, total_elapsed_time:"p99"::number p99_elapsed_time
, total_elapsed_time:"max"::number max_elapsed_time
FROM snowflake.account_usage.aggregate_query_history
WHERE TRUE
AND query_parameterized_hash = '<123456>'
AND interval_start_time > '2024-02-01'
AND interval_start_time < '2024-02-08'
ORDER BY interval_start_time DESC
;
Diese Abfrage berechnet die Abfragegesamtzeit. Sie können die Abfrage auch ändern, um detailliertere Kennzahlen zu den verschiedenen Phasen einer Abfrage (Kompilierung, Ausführung, Warteschlangenbildung und Sperren) zu erhalten. Für jede Phase werden aggregierte Statistiken zurückgegeben.