Testen der Abfragebeschleunigung (Query Acceleration)¶
Dieses Thema bietet einen Überblick darüber, wie ein Warehouse-Eigentümer oder -Administrator den Query Acceleration Service (Abfragebeschleunigungsdienst) verwenden kann, um die Performance von Abfragen zu verbessern, die in einem Warehouse ausgeführt werden. Weitere Informationen zur Abfragebeschleunigung finden Sie unter Verwenden des Query Acceleration Service.
Der Abfragebeschleunigungsdienst verlagert Teile der Abfrageverarbeitung auf serverlose Computeressourcen, was die Verarbeitung einer Abfrage beschleunigt und gleichzeitig die Nachfrage nach den Computeressourcen des Warehouses reduziert.
Wenn ein Warehouse Ausreißerabfragen hat (d. h. Abfragen, die mehr Ressourcen verbrauchen als eine typische Abfrage), kann der Abfragebeschleunigungsdienst auch die Performance der anderen Abfragen des Warehouses verbessern, da die zusätzlichen Verarbeitungsanforderungen der Ausreißerabfragen auf serverlose Computeressourcen verlagert werden.
Beispiele für Workloads, die vom Abfragebeschleunigungsdienst profitieren können, sind Ad-hoc-Analysen, Workloads mit unvorhersehbarem Datenvolumen pro Abfrage sowie Abfragen mit großen Scans und Auswahlfiltern.
Bemerkung
Sie müssen Zugriff auf die freigegebene SNOWFLAKE-Datenbank haben, um die unter diesem Thema beschriebenen Diagnoseabfragen ausführen zu können. Standardmäßig verfügt nur die Rolle ACCOUNTADMIN über die erforderlichen Berechtigungen zum Ausführen der Abfragen.
Suchen von Kandidaten für die Abfragebeschleunigung (Query Acceleration)¶
Sie können eine Funktion oder Abfragen verwenden, um festzustellen, ob durch das Aktivieren des Abfragebeschleunigungsdienstes die Performance einer Abfrage oder einer Gruppe von Abfragen verbessert werden kann.
Funktion: Ermitteln, ob eine bestimmte Abfrage profitieren könnte
Mit der Funktion SYSTEM$ESTIMATE_QUERY_ACCELERATION können Sie prüfen, ob eine bestimmte Abfrage ein geeigneter Kandidat für den Abfragebeschleunigungsdienst ist.
Die Funktion akzeptiert eine Abfrage-ID als einziges Argument. Das Einbetten der Funktion in die Funktion PARSE_JSON erleichtert die Interpretation der Ergebnisse. Beispiel:
select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Wenn eine Abfrage ein Kandidat für den Abfragebeschleunigungsdienst ist und noch nicht beschleunigt wurde, hat bei der Antwort status
den Wert eligible
. Der Status ineligible
bedeutet, dass die Abfrage nicht profitiert, wenn der Abfragebeschleunigungsdienst des Warehouses aktiviert wird.
Weitere Informationen zur Bewertung des Abfragebeschleunigungsdienstes für eine bestimmte Abfrage, einschließlich der geschätzten Ausführungszeiten für verschiedene Skalierungsfaktoren, finden Sie in der Referenzdokumentation.
Abfrage: Beste Abfragekandidaten in allen Warehouses
Diese Abfrage identifiziert die Abfragen, die möglicherweise vom Abfragebeschleunigungsdienst profitieren könnten, indem Sie den Umfang der Abfrageausführungszeit ermitteln, der für eine Beschleunigung in Frage kommt.
SELECT query_id, eligible_query_acceleration_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
ORDER BY eligible_query_acceleration_time DESC;
Abfrage: Beste Warehouse-Kandidaten nach Ausführungszeit
Diese Abfrage ermittelt die Warehouses, die möglicherweise vom Abfragebeschleunigungsdienst profitieren würden. Sie berechnet für jedes Warehouse die gesamte Abfrageausführungszeit, die für die Beschleunigung in Frage kommt.
SELECT warehouse_name, SUM(eligible_query_acceleration_time) AS total_eligible_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
GROUP BY warehouse_name
ORDER BY total_eligible_time DESC;
Abfrage: Beste Warehouse-Kandidaten nach Anzahl der Abfragen
Diese Abfrage identifiziert für einen gegebenen Zeitraum die Warehouses mit den meisten Abfragen, die für den Abfragebeschleunigungsdienst in Frage kommen.
SELECT warehouse_name, COUNT(query_id) AS num_eligible_queries
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
WHERE start_time > 'Mon, 29 May 2023 00:00:00'::timestamp
AND end_time < 'Tue, 30 May 2023 00:00:00'::timestamp
GROUP BY warehouse_name
ORDER BY num_eligible_queries DESC;
Hinweise zu Kosten¶
Neben den Credits, die das Warehouse verbraucht, verbrauchen die von einem Warehouse zur Abfragebeschleunigung gemieteten serverlosen Computeressourcen weitere Credits, die separat in Rechnung gestellt werden.
Der Abfragebeschleunigungsdienst wird für ein gesamtes Warehouse aktiviert, aber im Gegensatz zum Vergrößern eines Warehouses wird er nur für Abfragen verwendet, die von der erhöhten Verarbeitungsleistung profitieren. Dies kann für Warehouses mit gemischten Workloads kosteneffizient sein, da Abfragen, die keine zusätzlichen Computeressourcen erfordern, auch keine zusätzlichen Kosten für die Verwendung eines größeren Warehouses verursachen.
Sie können den Skalierungsfaktor des Warehouses verwenden, um die Kosten des Abfragebeschleunigungsdienstes zu kontrollieren. Dieser Skalierungsfaktor, der ein Multiplikator des Credit-Verbrauchs des Warehouses ist, setzt eine Grenze dafür, wie viel serverlose Verarbeitungsleistung von einem Warehouse genutzt werden kann. Wenn ein Warehouse beispielsweise einen Skalierungsfaktor von 5 hat, kann die Credit-Verbrauchsrate der serverlosen Computeressourcen die Verbrauchsrate des Warehouses um höchstens das 5-fache übersteigen.
Sie können die Funktion SYSTEM$ESTIMATE_QUERY_ACCELERATION verwenden, um abzuschätzen, wie der Skalierungsfaktor die Performance einer Abfrage beeinflusst.
Um die Performance ohne Berücksichtigung der Kosten zu maximieren, setzen Sie den Skalierungsfaktor auf 0.
Aktivieren des Abfragebeschleunigungsdienstes (Query Acceleration Service)¶
Um den Abfragebeschleunigungsdienst mit maximaler Performance-Steigerung zu aktivieren, verwenden Sie den Befehl ALTER WAREHOUSE wie folgt:
ALTER WAREHOUSE my_wh SET
ENABLE_QUERY_ACCELERATION = true
QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;