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.

Der Abfragebeschleunigungsdienst ist derzeit in den folgenden Regionen verfügbar:

  • AWS – US West (Oregon)

  • AWS – US East (N. Virginia)

  • AZURE – East US 2 (Virginia)

Bemerkung

Der Abfragebeschleunigungsdienst garantiert keine Vorhersagbarkeit von Leistungsverbesserungen. Um die Abfragen gleichmäßig zu verarbeiten, kann der Abfragebeschleunigungsdienst die Ressourcen jederzeit dynamisch neu zuweisen. Die Leistungsverbesserungen können für dieselbe Abfrage zu verschiedenen Zeiten unterschiedlich ausfallen.

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.

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'));

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
}

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'));

Die obige Anweisung ergibt die folgende Ausgabe:

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

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

In diesen Beispielen wird davon ausgegangen, dass die SNOWFLAKE-Datenbank und das ACCOUNT_USAGE-Schema für die aktuelle Sitzung aktiv sind. Außerdem wird vorausgesetzt, dass die ACCOUNTADMIN-Rolle (oder eine Rolle, der in der Datenbank IMPORTED PRIVILEGES zugeordnet wurde) zum Einsatz kommt. Wenn diese nicht verwendet werden, führen Sie folgende Befehle aus, bevor Sie die Abfragen in den Beispielen ausführen:

USE ROLE ACCOUNTADMIN;

USE SCHEMA snowflake.account_usage;

Identifizieren Sie die Abfragen, die am meisten von dem Dienst profitieren würden, indem Sie den Anteil der Abfrageausführungszeit ermitteln, der für eine Beschleunigung in Frage kommt:

SELECT query_id, eligible_query_acceleration_time
FROM QUERY_ACCELERATION_ELIGIBLE
ORDER BY eligible_query_acceleration_time DESC;

Identifizieren Sie die Abfragen, die am meisten von dem Dienst in einem bestimmten Warehouse mywh profitieren würden:

SELECT query_id, eligible_query_acceleration_time
FROM QUERY_ACCELERATION_ELIGIBLE
WHERE warehouse_name = 'mywh'
ORDER BY eligible_query_acceleration_time DESC;

Identifizieren Sie für einen bestimmten 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 query_acceleration_eligible
WHERE start_time > 'Tue, 18 January 2022 12:00:00'::timestamp
AND end_time < 'Tue, 19 January 2022 00:00:00'::timestamp
GROUP BY warehouse_name
ORDER BY num_eligible_queries DESC;

Ermitteln Sie die Warehouses, die am meisten von dem Abfragebeschleunigungsdienst profitieren würden. Berechnen Sie 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 QUERY_ACCELERATION_ELIGIBLE
GROUP BY warehouse_name
ORDER BY total_eligible_time DESC;

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

SELECT MAX(upper_limit_scale_factor)
FROM QUERY_ACCELERATION_ELIGIBLE
WHERE warehouse_name = 'mywh';

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.

Bemerkung

  • Der Abfragebeschleunigungsdienst beschleunigt keine Abfragen auf Tabellen, für die die Suchoptimierung aktiviert ist.

  • Der Abfragebeschleunigungsdienst beschleunigt keine Abfragen, die aus dem Warehouse-Cache gelesen werden können.

Beispiele

Im folgenden Beispiel wird ein Warehouse mit dem Namen my_wh erstellt, für das der Abfragebeschleunigungsdienst mit einem maximalen Skalierungsfaktor von 2 aktiviert ist:

create warehouse my_wh with
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 2;

Das folgende Beispiel aktiviert den Abfragebeschleunigungsdienst für ein Warehouse mit dem Namen my_wh mit einem maximalen Skalierungsfaktor von 8:

alter warehouse my_wh set
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 8;

Führen Sie den Befehl SHOW WAREHOUSES aus, um Details zum Warehouse my_wh anzuzeigen. Überprüfen Sie, ob der Abfragebeschleunigungsdienst aktiviert ist und der maximale Skalierungsfaktor für den Abfragebeschleunigungsdienst 8 beträgt.

show warehouses like 'my_wh';

+---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------+
| name    | state     | type     | size    | min_cluster_count | max_cluster_count | started_clusters | 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      | scaling_policy |
|---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------|
| MY_WH   | STARTED   | STANDARD | X-Small |                 1 |                 1 |                0 |       0 |      0 | N          | N          |          600 | true        |           |              |           |       | 2022-02-17 22:41:03.119 +0000 | 2022-05-13 14:10:57.994 +0000 | 2022-05-13 14:10:57.994 +0000 | ACCOUNTADMIN |         | true                      |                                   8 | null             |       0 |        0 |      0 |         1 | 158403873 | STANDARD       |
+---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------+

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 können bei der Bestimmung des geeigneten Skalierungsfaktors für ein Warehouse hilfreich sein. Weitere Details dazu finden Sie unter Identifizieren von Abfragen und Warehouses, die von Query Acceleration profitieren könnten (unter diesem Thema).

Ü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.

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

SELECT * 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;

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

SELECT * 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;

Anzeigen von Abrechnungsinformationen für den Query Acceleration Service

Query Acceleration wird wie andere serverlose Features in Snowflake abgerechnet, d. h. Sie zahlen sekundengenau für die genutzten Ressourcen.

Feature

Snowflake-Credits pro Computestunde:

Snowflake-verwaltete Datenverarbeitung

Clouddienste

Query Acceleration

1

1

Anzeigen von Abrechnungsinformationen auf der klassischen Weboberfläche

Wenn Query Acceleration für Ihr Konto aktiviert ist, enthält die Abrechnungsseite auf der 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 mit der QUERY_ACCELERATION_HISTORY-Funktion

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

Beispiel

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

select * from
table(information_schema.query_acceleration_history(
  date_range_start=>dateadd(H, -12, current_timestamp)));
Zurück zum Anfang