Verwenden des Query Acceleration Service

Der Abfragebeschleunigungsdienst kann Teile des Abfrage-Workloads eines Warehouses beschleunigen. Wenn der Dienst für ein Warehouse aktiviert ist, kann er die Gesamtleistung des Warehouses verbessern, indem er die Auswirkungen von Ausreißerabfragen reduziert, d. h. von Abfragen, die mehr Ressourcen verbrauchen als typische Abfragen. Der Abfragebeschleunigungsdienst tut dies, indem er Teile der Abfrageverarbeitung auf gemeinsam genutzte Computeressourcen auslagert, die vom Dienst bereitgestellt werden.

Beispiele für die Arten von Workloads, die von dem Abfragebeschleunigungsdienst profitieren können:

  • Ad-hoc-Analysen.

  • Workloads mit unvorhersehbarem Datenvolumen pro Abfrage.

  • Abfragen mit großen Scans und selektiven Filtern.

Der Abfragebeschleunigungsdienst kann diese Arten von Workloads effizienter bewältigen, indem er mehr Arbeit parallel ausführt und die für das Scannen und Filtern aufgewendete Zeit reduziert.

Bemerkung

Der Abfragebeschleunigungsdienst hängt von der Verfügbarkeit des Servers ab. Daher können die Leistungsverbesserungen im Laufe der Zeit schwanken.

Unter diesem Thema:

Identifizieren von Abfragen und Warehouses, die von Query Acceleration profitieren könnten

Um die Abfragen zu identifizieren, die von dem Abfragebeschleunigungsdienst profitieren könnten, können Sie die Funktion SYSTEM$ESTIMATE_QUERY_ACCELERATION verwenden oder die Funktion Ansicht QUERY_ACCELERATION_ELIGIBLE abfragen. In der QUERY_ACCELERATION_ELIGIBLE-Ansicht werden auch Warehouses identifiziert, die von dem Abfragebeschleunigungsdienst profitieren könnten.

Ungeeignete Abfragen

Einige Abfragen sind für die Abfragebeschleunigung nicht geeignet. Folgende Gründe sind typisch dafür, warum eine Abfrage nicht beschleunigt werden kann:

  • Es sind nicht genügend Partitionen vorhanden. Wenn nicht genügend Partitionen gescannt werden können, werden die Vorteile der Abfragebeschleunigung durch die Latenz beim Erhalten der Ressourcen für den Abfragebeschleunigungsdienst aufgehoben.

  • Die Abfrage führte weder Filterung noch Aggregation aus.

  • Die Filter sind nicht selektiv genug. Oder der GROUP BY-Ausdruck hat eine hohe Kardinalität.

  • Die Abfrage enthält eine LIMIT-Klausel, aber keine ORDER BY-Klausel.

  • Die Abfrage enthält Funktionen, die nicht deterministische Ergebnisse liefern (z. B. SEQ oder RANDOM).

Identifizieren von Abfragen mit der SYSTEM$ESTIMATE_QUERY_ACCELERATION-Funktion

Mit der Funktion SYSTEM$ESTIMATE_QUERY_ACCELERATION kann festgestellt werden, ob eine zuvor ausgeführte Abfrage vom Abfragebeschleunigungsdienst profitieren könnte. Wenn die Abfrage für die Abfragebeschleunigung in Frage kommt, gibt die Funktion die geschätzte Abfrageausführungszeit für verschiedene Skalierungsfaktoren der Abfragebeschleunigung zurück.

Beispiel

Führen Sie die folgende Anweisung aus, um festzustellen, ob die Abfragebeschleunigung für eine bestimmte Abfrage von Vorteil sein könnte:

SELECT PARSE_JSON(SYSTEM$ESTIMATE_QUERY_ACCELERATION('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Copy

In diesem Beispiel kommt die Abfrage für den Abfragebeschleunigungsdienst in Frage und enthält die geschätzten Abfragezeiten bei Nutzung des Dienstes:

{
  "estimatedQueryTimes": {
    "1": 171,
    "10": 115,
    "2": 152,
    "4": 133,
    "8": 120
  },
  "originalQueryTime": 300.291,
  "queryUUID": "8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f",
  "status": "eligible",
  "upperLimitScaleFactor": 10
}
Copy

Das folgende Beispiel zeigt die Ergebnisse für eine Abfrage, die nicht für den Abfragebeschleunigungsdienst geeignet ist:

SELECT PARSE_JSON(SYSTEM$ESTIMATE_QUERY_ACCELERATION('cf23522b-3b91-cf14-9fe0-988a292a4bfa'));
Copy

Die obige Anweisung ergibt die folgende Ausgabe:

{
  "estimatedQueryTimes": {},
  "originalQueryTime": 20.291,
  "queryUUID": "cf23522b-3b91-cf14-9fe0-988a292a4bfa",
  "status": "ineligible",
  "upperLimitScaleFactor": 0
}
Copy

Identifizieren von Abfragen und Warehouses mit der Ansicht QUERY_ACCELERATION_ELIGIBLE

Fragen Sie Ansicht QUERY_ACCELERATION_ELIGIBLE ab, um die Abfragen und Warehouses zu ermitteln, die am meisten von dem Abfragebeschleunigungsdienst profitieren könnten. Für jede Abfrage enthält die Ansicht den Anteil der Abfrageausführungszeit, der für den Abfragebeschleunigungsdienst in Frage kommt.

Beispiele

Bemerkung

Bei diesem Beispiel wird davon ausgegangen, dass die ACCOUNTADMIN-Rolle (oder eine Rolle mit IMPORTED PRIVILEGES-Berechtigung für die freigegebene SNOWFLAKE-Datenbank) in Verwendung ist. Wenn diese nicht verwendet wird, führen Sie folgende Befehle aus, bevor Sie die Abfragen in den Beispielen ausführen:

USE ROLE ACCOUNTADMIN;
Copy

Identifizieren Sie die Abfragen, die möglicherweise von dem Dienst profitieren könnten, indem Sie den Anteil 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;
Copy

Identifizieren Sie die Abfragen, die möglicherweise von dem Dienst in dem spezifischen Warehouse mywh profitieren könnten:

SELECT query_id, eligible_query_acceleration_time
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = 'mywh'
  ORDER BY eligible_query_acceleration_time DESC;
Copy

Identifizieren Sie die Warehouses mit den meisten Abfragen, die in einem bestimmten Zeitraum 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;
Copy

Identifizieren Sie die Warehouses, die mit dem Abfragebeschleunigungsdienst die meiste Zeit einsparen können:

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;
Copy

Ermitteln Sie die Obergrenze des Skalierungsfaktors für den Abfragebeschleunigungsdienst eines bestimmten Warehouses:

SELECT MAX(upper_limit_scale_factor)
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = 'mywh';
Copy

Ermitteln Sie die Verteilung der Skalierungsfaktoren für den Abfragebeschleunigungsdienst eines bestimmten Warehouses:

SELECT upper_limit_scale_factor, COUNT(upper_limit_scale_factor)
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
  WHERE warehouse_name = '<warehouse_name>'
  GROUP BY 1 ORDER BY 1;
Copy

Aktivieren von Query Acceleration

Aktivieren Sie den Abfragebeschleunigungsdienst, indem Sie ENABLE_QUERY_ACCELERATION = TRUE bei der Erstellung eines Warehouses (mit CREATE WAREHOUSE) oder später (mit ALTER WAREHOUSE) angeben.

Unterstützte SQL-Befehle

Der Abfragebeschleunigungsdienst unterstützt die folgenden SQL-Befehle:

  • SELECT

  • INSERT (wenn die Anweisung eine SELECT-Anweisung enthält)

  • CREATE TABLE AS SELECT (CTAS)

Eine Abfrage oder ein Teil einer Abfrage (d. h. eine Unterabfrage oder eine Klausel), die einen unterstützten SQL-Befehl enthält, kann möglicherweise mit dem Abfragebeschleunigungsdienst beschleunigt werden, wenn sie für die Beschleunigung in Frage kommt.

Beispiele

Im folgenden Beispiel wird der Abfragebeschleunigungsdienst für ein Warehouse mit dem Namen my_wh aktiviert:

CREATE WAREHOUSE my_wh WITH
  ENABLE_QUERY_ACCELERATION = true;
Copy

Führen Sie den Befehl SHOW WAREHOUSES aus, um Details zum Warehouse my_wh anzuzeigen.

SHOW WAREHOUSES LIKE 'my_wh';

+---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------+
| name    | state   | type     | size    | running | queued | is_default | is_current | auto_suspend | auto_resume | available | provisioning | quiescing | other | created_on                    | resumed_on                    | updated_on                    | owner        | comment | enable_query_acceleration | query_acceleration_max_scale_factor | resource_monitor | actives | pendings | failed | suspended | uuid       |
|---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------|
| MY_WH   | SUSPENDED | STANDARD | Medium |       0 |      0 | N          | N          |          600 | true        |           |              |           |       | 2023-01-20 14:31:49.283 -0800 | 2023-01-20 14:31:49.388 -0800 | 2023-01-20 16:34:28.583 -0800 | ACCOUNTADMIN |         | true                      |                                   8 | null             |       0 |        0 |      0 |         4 | 1132659053 |
+---------+---------+----------+---------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+------------+
Copy

Der Abfragebeschleunigungsdienst kann die Credit-Verbrauchsrate eines Warehouses erhöhen. Der maximale Skalierungsfaktor kann dazu beitragen, die Verbrauchsrate zu begrenzen. Weitere Informationen zur Eigenschaft QUERY_ACCELERATION_MAX_SCALE_FACTOR finden Sie unter CREATE WAREHOUSE oder ALTER WAREHOUSE.

Die Ansicht QUERY_ACCELERATION_ELIGIBLE und die Funktion SYSTEM$ESTIMATE_QUERY_ACCELERATION sind möglicherweise bei der Bestimmung des geeigneten Skalierungsfaktors für ein Warehouse hilfreich. Weitere Details dazu finden Sie unter Identifizieren von Abfragen und Warehouses, die von Query Acceleration profitieren könnten (unter diesem Thema).

Anpassen des Skalierungsfaktors

Der Skalierungsfaktor ist ein Mechanismus zur Kostenkontrolle, mit dem Sie eine Obergrenze für den Umfang der Computeressourcen festlegen können, die ein Warehouse für die Abfragebeschleunigung leasen kann. Der Skalierungsfaktor wird als Multiplikator auf Basis von Warehouse-Größe und Kosten verwendet.

Angenommen, Sie setzen den Skalierungsfaktor für ein mittelgroßes Warehouse (Medium) auf 5. Dies bedeutet Folgendes:

  • Das Warehouse kann Computeressourcen bis zur 5-fachen Größe eines Medium-Warehouses leasen.

  • Da ein Medium-Warehouse 4 Credits pro Stunde kostet, kann das Leasen dieser Ressourcen bis zu 20 Credits pro Stunde zusätzlich kosten (4 Credits pro Medium-Warehouse × 5).

Die Kosten sind immer gleich, unabhängig davon, wie viele Abfragen gleichzeitig den Abfragebeschleunigungsdienst nutzen. Der Abfragebeschleunigungsdienst wird nur dann sekundengenau abgerechnet, wenn der Dienst genutzt wird. Diese Credits werden getrennt von der Warehouse-Nutzung in Rechnung gestellt.

Nicht alle Abfragen erfordern die gesamte Menge an Ressourcen, die durch den Skalierungsfaktor zur Verfügung gestellt werden. Der Umfang der für den Dienst angeforderten Ressourcen hängt davon ab, wie viel von der Abfrage für eine Beschleunigung in Frage kommt und wie viele Daten zur Beantwortung der Abfrage verarbeitet werden müssen. Unabhängig vom Skalierungsfaktor oder der Menge der angeforderten Ressourcen wird die Menge der für die Abfragebeschleunigung verfügbaren Ressourcen von der Verfügbarkeit der Ressourcen des Dienstes und von der Anzahl gleichzeitiger Anforderungen begrenzt. Der Abfragebeschleunigungsdienst verbraucht nur so viele Ressourcen, wie benötigt werden und zum Zeitpunkt der Ausführung der Abfrage verfügbar sind.

Wenn der Skalierungsfaktor nicht explizit festgelegt wird, ist der Standardwert 8. Wenn der Skalierungsfaktor auf 0 gesetzt wird, entfällt das obere Limit und die Abfragen können so viele Ressourcen leasen, wie benötigt werden und zum Bedienen der Abfrage verfügbar sind.

Beispiel

Im folgenden Beispiel wird der Abfragebeschleunigungsdienst für ein Warehouse mit dem Namen my_wh mit einem maximalen Skalierungsfaktor von 0 aktiviert:

ALTER WAREHOUSE my_wh SET
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;
Copy

Überwachen der Query Acceleration-Nutzung

Verwenden der Weboberfläche zur Überwachung der Query Acceleration-Nutzung

Sobald Sie den Abfragebeschleunigungsdienst aktivieren, können Sie den Bereich Profilübersicht in Query Profile anzeigen, um die Auswirkungen der Abfragebeschleunigungsergebnisse zu sehen.

Der folgende Screenshot zeigt ein Beispiel für die angezeigten Statistiken für die Abfrage insgesamt. Wenn in einer Abfrage mehrere Operationen beschleunigt wurden, werden die Ergebnisse in dieser Ansicht zusammengefasst, sodass Sie den Gesamtumfang der vom Abfragebeschleunigungsdienst ausgeführten Verarbeitungsleistung anzeigen können.

../_images/query-acceleration-profile-overview.png

Der Abschnitt Query Acceleration des Bereichs Profile Overview enthält die folgenden Statistiken:

  • Partitionen, die vom Dienst gescannt wurden – Anzahl der Dateien, die zum Scannen an den Abfragebeschleunigungsdienst übergeben wurden.

  • Scans, die für die Beschleunigung ausgewählt wurden – Anzahl der Tabellen-Scans, die beschleunigt wurden.

Klicken Sie in den Operatordetails (weitere Informationen dazu siehe Profilübersicht/Operatordetails) auf den Operator, um detaillierte Informationen zu erhalten. Der folgende Screenshot zeigt ein Beispiel für die angezeigten Statistiken für eine TableScan-Operation:

../_images/query-acceleration-table-scan.png

Der Abschnitt Query Acceleration des Detailbereichs TableScan enthält die folgenden Statistiken:

  • Partitionen, die vom Dienst gescannt wurden – Anzahl der Dateien, die zum Scannen an den Abfragebeschleunigungsdienst übergeben wurden.

Verwendung der Account Usage-Ansicht QUERY_HISTORY zur Überwachung der Query Acceleration-Nutzung

Um die Auswirkungen der Abfragebeschleunigung auf eine Abfrage anzuzeigen, können Sie die folgenden Spalten der QUERY_HISTORY-Ansicht verwenden.

  • QUERY_ACCELERATION_BYTES_SCANNED

  • QUERY_ACCELERATION_PARTITIONS_SCANNED

  • QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

Sie können diese Spalten verwenden, um die Abfragen zu identifizieren, die vom Abfragebeschleunigungsdienst profitiert haben. Für jede Abfrage können Sie auch die Gesamtzahl der vom Abfragebeschleunigungsdienst gescannten Partitionen und Bytes ermitteln.

Beschreibungen zu den einzelnen Spalten finden Sie unter QUERY_HISTORY-Ansicht.

Bemerkung

Für eine bestimmte Abfrage kann die Summe der Spalten QUERY_ACCELERATION_BYTES_SCANNED und BYTES_SCANNED bei Verwendung des Abfragebeschleunigungsdienstes größer sein, als wenn der Dienst nicht verwendet wird. Dasselbe gilt für die Summe der Spalten QUERY_ACCELERATION_PARTITIONS_SCANNED und PARTITIONS_SCANNED.

Der Anstieg der Anzahl der Bytes und Partitionen ist auf die Zwischenergebnisse zurückzuführen, die vom Dienst zur Abfragebeschleunigung generiert werden.

So finden Sie beispielsweise die Abfragen mit den meisten vom Abfragebeschleunigungsdienst in den letzten 24 Stunden gescannten Bytes:

SELECT query_id,
       query_text,
       warehouse_name,
       start_time,
       end_time,
       query_acceleration_bytes_scanned,
       query_acceleration_partitions_scanned,
       query_acceleration_upper_limit_scale_factor
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
  WHERE query_acceleration_partitions_scanned > 0 
  AND start_time >= DATEADD(hour, -24, CURRENT_TIMESTAMP())
  ORDER BY query_acceleration_bytes_scanned DESC;
Copy

Und so finden Sie die Abfragen mit der größten Anzahl von Partitionen, die vom Abfragebeschleunigungsdienst in den letzten 24 Stunden gescannt wurden:

SELECT query_id,
       query_text,
       warehouse_name,
       start_time,
       end_time,
       query_acceleration_bytes_scanned,
       query_acceleration_partitions_scanned,
       query_acceleration_upper_limit_scale_factor
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
  WHERE query_acceleration_partitions_scanned > 0 
  AND start_time >= DATEADD(hour, -24, CURRENT_TIMESTAMP())
  ORDER BY query_acceleration_partitions_scanned DESC;
Copy

Kosten für den Abfragebeschleunigungsdienst (Query Acceleration Service)

Bei der Abfragebeschleunigung (Query Acceleration Service) werden Credits verbraucht, da zum Ausführen von Teilen der in Frage kommenden Abfragen serverlose Computeressourcen verwendet werden.

Die Abfragebeschleunigung wird wie andere serverlose Features in Snowflake abgerechnet, d. h. Sie zahlen sekundengenau für die genutzten Computeressourcen. Weitere Informationen zur Anzahl der vom Abfragebeschleunigungsdienst (Query Acceleration Service) verbrauchten Credits pro Computestunde finden Sie in der „Serverless Feature Credit Table“ unter Snowflake Service Consumption Table.

Anzeigen von Abrechnungsinformationen auf der klassischen Konsole

Wenn die Abfragebeschleunigung (Query Acceleration) für Ihr Konto aktiviert ist, enthält die Abrechnungsseite auf der klassischen Weboberfläche ein Warehouse mit dem Namen QUERY_ACCELERATION, das alle von diesem Dienst verbrauchten Credits für alle Warehouses Ihres Kontos anzeigt.

Der folgende Screenshot zeigt ein Beispiel für die Abrechnungsinformationen des Warehouses QUERY_ACCELERATION:

../_images/query-acceleration-billing-ui.png

Anzeigen der Abrechnung über die Account Usage-Ansicht QUERY_ACCELERATION_HISTORY

Sie können die Abrechnungsdaten in der Account Usage-Ansicht QUERY_ACCELERATION_HISTORY-Ansicht einsehen.

Beispiel

Diese Abfrage gibt die Credits zurück, die von jedem Warehouse in Ihrem Konto für den Abfragebeschleunigungsdienst verbraucht wurden (aktueller Monat):

SELECT warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE start_time >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1
  ORDER BY 2 DESC;
Copy

Anzeigen der Abrechnung mit der Organization Usage-Ansicht QUERY_ACCELERATION_HISTORY

Sie können die Abrechnungsdaten für den Abfragebeschleunigungsdienst für alle Konten in Ihrer Organisation in der Organization Usage-Ansicht QUERY_ACCELERATION_HISTORY-Ansicht anzeigen.

Beispiel

Diese Abfrage gibt die Credits zurück, die von jedem Warehouse in Ihrem Konto für den Abfragebeschleunigungsdienst verbraucht wurden (aktueller Monat):

SELECT account_name,
       warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ORGANIZATION_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE usage_date >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1, 2
  ORDER BY 3 DESC;
Copy

Anzeigen der Abrechnung mit der QUERY_ACCELERATION_HISTORY-Funktion

Sie können die Abrechnungsdaten auch mit der Information Schema-Funktion QUERY_ACCELERATION_HISTORY anzeigen.

Beispiel

Im folgenden Beispiel wird die Funktion QUERY_ACCELERATION_HISTORY verwendet, um Informationen zu den von diesem Dienst in den letzten 12 Stunden beschleunigten Abfragen zurückzugeben:

SELECT start_time,
       end_time,
       credits_used,
       warehouse_name,
       num_files_scanned,
       num_bytes_scanned
  FROM TABLE(INFORMATION_SCHEMA.QUERY_ACCELERATION_HISTORY(
    date_range_start=>DATEADD(H, -12, CURRENT_TIMESTAMP)));
Copy

Evaluieren von Kosten und Performance

Dieser Abschnitt enthält Beispielabfragen, mit deren Hilfe Sie die Abfrageleistung und die Kosten vor und nach Aktivierung des Abfragebeschleunigungsdienstes bewerten können.

Anzeigen der Kosten für Warehouse und Abfragebeschleunigungsdienst

Die folgende Abfrage berechnet die Kosten für das Warehouse und den Abfragebeschleunigungsdienst eines bestimmten Warehouses. Sie können diese Abfrage nach Aktivierung des Abfragebeschleunigungsdienstes für ein Warehouse ausführen, um die Kosten vor und nach der Aktivierung der Abfragebeschleunigung zu vergleichen. Der Datumsbereich für die Abfrage beginnt 8 Wochen vor der ersten Credit-Nutzung für den Abfragebeschleunigungsdienst und endet 8 Wochen nach den letzten angefallenen Kosten für den Abfragebeschleunigungsdienst (oder bis zum aktuellen Datum).

Bemerkung

  • Diese Abfrage eignet sich am besten zur Bewertung der Kosten des Dienstes, wenn die Warehouse-Eigenschaften und der Workload vor und nach der Aktivierung des Abfragebeschleunigungsdienstes gleich bleiben.

  • Diese Abfrage liefert nur dann Ergebnisse, wenn im Warehouse Credits für beschleunigte Abfragen genutzt wurden.

Diese Beispielabfrage gibt Warehouse- und Abfragebeschleunigungsdienst-Kosten für my_warehouse zurück:

WITH credits AS (
  SELECT 'QC' AS credit_type,
         TO_DATE(end_time) AS credit_date,
         SUM(credits_used) AS num_credits
    FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
    WHERE warehouse_name = 'my_warehouse'
    AND credit_date BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
  GROUP BY credit_date
  UNION ALL
  SELECT 'WC' AS credit_type,
         TO_DATE(end_time) AS credit_date,
         SUM(credits_used) AS num_credits
    FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
    WHERE warehouse_name = 'my_warehouse'
    AND credit_date BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
               WHERE warehouse_name = 'my_warehouse'
           ))
  GROUP BY credit_date
)
SELECT credit_date,
       SUM(IFF(credit_type = 'QC', num_credits, 0)) AS qas_credits,
       SUM(IFF(credit_type = 'WC', num_credits, 0)) AS compute_credits,
       compute_credits + qas_credits AS total_credits,
       AVG(total_credits) OVER (
         PARTITION BY NULL ORDER BY credit_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
         AS avg_total_credits_7days
  FROM credits
  GROUP BY credit_date
  ORDER BY credit_date;
Copy

Anzeigen der Abfrage-Performance

Diese Abfrage gibt die durchschnittliche Ausführungszeit für Abfragen zurück, die in einem Warehouse für die Abfragebeschleunigung in Frage kommen. Der Datumsbereich für die Abfrage beginnt 8 Wochen vor der ersten Credit-Nutzung für den Abfragebeschleunigungsdienst und endet 8 Wochen nach den letzten angefallenen Kosten für den Abfragebeschleunigungsdienst (oder bis zum aktuellen Datum). Anhand der Ergebnisse können Sie beurteilen, wie sich die durchschnittliche Abfrage-Performance nach der Aktivierung des Abfragebeschleunigungsdienstes verändert hat.

Bemerkung

  • Diese Abfrage eignet sich am besten für die Bewertung der Abfrage-Performance, wenn der Warehouse-Workload vor und nach der Aktivierung des Abfragebeschleunigungsdienstes gleich bleibt.

  • Wenn der Warehouse-Workload stabil bleibt, sollte auch der Wert in der Spalte num_execs konstant bleiben.

  • Wenn der Wert in der Spalte num_execs der Abfrageergebnisse drastisch ansteigt oder abfällt, sind die Ergebnisse dieser Abfrage wahrscheinlich nicht für eine Evaluation der Abfrage-Performance geeignet.

Diese Beispielabfrage gibt die Abfrageausführungszeit pro Tag zurück und berechnet den 7-Tage-Durchschnitt der vorherigen Woche für Abfragen, die für eine Beschleunigung im Warehouse my_warehouse in Frage kommen:

WITH qas_eligble_or_accelerated AS (
  SELECT TO_DATE(qh.end_time) AS exec_date,
        COUNT(*) AS num_execs,
        SUM(qh.execution_time) AS exec_time,
        MAX(IFF(qh.query_acceleration_bytes_scanned > 0, 1, NULL)) AS qas_accel_flag
    FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY AS qh
    WHERE qh.warehouse_name = 'my_warehouse'
    AND TO_DATE(qh.end_time) BETWEEN
           DATEADD(WEEK, -8, (
             SELECT TO_DATE(MIN(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
              WHERE warehouse_name = 'my_warehouse'
           ))
           AND
           DATEADD(WEEK, +8, (
             SELECT TO_DATE(MAX(end_time))
               FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
              WHERE warehouse_name = 'my_warehouse'
           ))
    AND (qh.query_acceleration_bytes_scanned > 0
          OR
          EXISTS (
            SELECT 1
              FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE AS qae
               WHERE qae.query_id = qh.query_id
               AND qae.warehouse_name = qh.warehouse_name
          )
         )
    GROUP BY exec_date
)
SELECT exec_date,
       SUM(exec_time) OVER (
         PARTITION BY NULL ORDER BY exec_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
       ) /
       NULLIFZERO(SUM(num_execs) OVER (
         PARTITION BY NULL ORDER BY exec_date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
       ) AS avg_exec_time_7days,
      exec_time / NULLIFZERO(num_execs) AS avg_exec_time,
      qas_accel_flag,
      num_execs,
      exec_time
  FROM qas_eligble_or_accelerated;
Copy

Die Ausgabe der Anweisung enthält die folgenden Spalten:

Spalte

Beschreibung

EXEC_DATE

Datum der Ausführung der Abfrage.

AVG_EXEC_TIME_7DAYS

Die durchschnittliche Ausführungszeit für die letzten 7 Tage einschließlich EXEC_DATE.

AVG_EXEC_TIME

Die durchschnittliche Ausführungszeit der Abfrage.

QAS_ACCEL_FLAG

1, wenn irgendwelche Abfragen beschleunigt wurden; NULL, wenn keine Abfragen beschleunigt wurden.

NUM_EXECS

Anzahl der beschleunigten Abfragen.

EXEC_TIME

Gesamtausführungszeit aller für die Abfragebeschleunigung in Frage kommenden Abfragen.

Kompatibilität mit der Suchoptimierung

Abfragebeschleunigung und Suchoptimierung können zusammen genutzt werden, um die Abfrageleistung zu optimieren. Erstens kann die Suchoptimierung die Mikropartitionen entfernen, die für eine Abfrage nicht benötigt werden. Dann kann die Abfragebeschleunigung für in Frage kommende Abfragen einen Teil der verbleibenden Verarbeitung auf freigegebene Computeressourcen verlagern, die vom Dienst bereitgestellt werden.

Die Verarbeitungsleistung von Abfragen, die durch beide Dienste beschleunigt werden, variiert je nach Workload und verfügbaren Ressourcen.