Utilisation du service Query Acceleration

Le service d’accélération des requêtes peut accélérer certaines parties de la charge de travail des requêtes dans un entrepôt. Lorsqu’elle est activée pour un entrepôt, elle peut améliorer les performances globales de l’entrepôt en réduisant l’impact des requêtes aberrantes, qui sont des requêtes qui utilisent plus de ressources que la requête ordinaire. Pour ce faire, le service d’accélération des requêtes décharge des parties du travail de traitement des requêtes sur des ressources de calcul partagées qui sont fournies par le service.

Voici quelques exemples des types de charges de travail qui pourraient bénéficier du service d’accélération des requêtes :

  • Analyses ad hoc.

  • Charges de travail avec un volume de données imprévisible par requête.

  • Requêtes avec de grandes analyses et des filtres sélectifs.

Le service d’accélération des requêtes peut traiter ces types de charges de travail plus efficacement en effectuant davantage de travaux en parallèle et en réduisant le temps d’horloge consacré à l’analyse et au filtrage.

Note

Le service d’accélération des requêtes ne garantit pas la prévisibilité des améliorations de performance. Afin de faire bénéficier les requêtes de manière équitable, le service d’accélération des requêtes peut réaffecter les ressources de manière dynamique à tout moment. L’amélioration des performances peut varier pour une même requête exécutée à différents moments.

Dans ce chapitre :

Identification des requêtes et des entrepôts qui pourraient bénéficier de Query Acceleration

Pour identifier les requêtes qui pourraient bénéficier du service d’accélération des requêtes, vous pouvez utiliser la fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION ou interroger Vue QUERY_ACCELERATION_ELIGIBLE. La vue QUERY_ACCELERATION_ELIGIBLE identifie également les entrepôts qui pourraient bénéficier du service d’accélération des requêtes.

Identifier les requêtes avec la fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION

La fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION peut aider à déterminer si une requête exécutée précédemment peut bénéficier du service d’accélération des requêtes. Si la requête est éligible à l’accélération des requêtes, la fonction renvoie le temps d’exécution estimé de la requête pour différents facteurs d’échelle d’accélération.

Exemple

Exécutez l’instruction suivante pour déterminer si l’accélération des requêtes peut être bénéfique à une requête spécifique :

select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));

Dans cet exemple, la requête est éligible au service d’accélération des requêtes et comprend des temps de requête estimés en utilisant le service :

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

L’exemple suivant montre les résultats d’une requête qui n’est pas éligible au service d’accélération des requêtes :

select parse_json(system$estimate_query_acceleration('cf23522b-3b91-cf14-9fe0-988a292a4bfa'));

L’instruction ci-dessus produit le résultat suivant :

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

Identifier les requêtes et les entrepôts avec la vue QUERY_ACCELERATION_ELIGIBLE

Interrogez Vue QUERY_ACCELERATION_ELIGIBLE pour identifier les requêtes et les entrepôts qui pourraient bénéficier le plus du service d’accélération des requêtes. Pour chaque requête, la vue inclut la quantité de temps d’exécution de la requête qui est éligible pour le service d’accélération des requêtes.

Exemples

Note

Ces exemples supposent que la base de données SNOWFLAKE et le schéma ACCOUNT_USAGE sont utilisés pour la session en cours. Les exemples supposent également que le rôle ACCOUNTADMIN (ou un rôle ayant obtenu des PRIVILEGES IMPORTED pour la base de données) est utilisé. S’ils ne sont pas utilisés, exécutez les commandes suivantes avant d’exécuter les requêtes dans les exemples :

USE ROLE ACCOUNTADMIN;

USE SCHEMA snowflake.account_usage;

Identifiez les requêtes qui bénéficieraient le plus du service en fonction du temps d’exécution de la requête qui pourrait être accéléré :

SELECT query_id, eligible_query_acceleration_time
FROM QUERY_ACCELERATION_ELIGIBLE
ORDER BY eligible_query_acceleration_time DESC;

Identifier les requêtes qui bénéficieraient le plus du service dans un entrepôt spécifique mywh :

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

Identifier les entrepôts qui, au cours d’une période donnée, présentent le plus grand nombre de requêtes pouvant bénéficier du service d’accélération des requêtes :

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;

Identifiez les entrepôts qui bénéficieraient le plus du service d’accélération des requêtes. Pour chaque entrepôt, calculez le temps total d’exécution des requêtes pouvant bénéficier de l’accélération :

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;

Identifiez le facteur d’échelle de la limite supérieure pour le service d’accélération des requêtes pour un entrepôt donné :

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

Activation de Query Acceleration

Activez le service d’accélération des requêtes en spécifiant ENABLE_QUERY_ACCELERATION = TRUE lors de la création d’un entrepôt (en utilisant CREATE WAREHOUSE) ou ultérieurement (en utilisant ALTER WAREHOUSE).

Note

Le service Query Acceleration n’accélère pas les requêtes sur les tables pour lesquelles l’optimisation des recherches est activée.

Commandes SQL prises en charge

Le service d’accélération des requêtes prend en charge les commandes suivantes SQL :

  • SELECT

  • INSERT (lorsque l’instruction contient une instruction SELECT)

  • CREATE TABLE AS SELECT (CTAS)

Une requête, ou une partie d’une requête (c’est-à-dire une sous-requête ou une clause), avec une commande SQL prise en charge peuvent être accélérées par le service d’accélération de requêtes si elle est éligible à l’accélération.

Exemples

L’exemple suivant crée un entrepôt nommé my_wh pour lequel le service d’accélération des requêtes est activé avec un facteur d’échelle maximal de 2 :

create warehouse my_wh with
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 2;

L’exemple suivant active le service d’accélération des requêtes pour un entrepôt nommé my_wh avec un facteur d’échelle maximum de 8 :

alter warehouse my_wh set
  ENABLE_QUERY_ACCELERATION = true
  QUERY_ACCELERATION_MAX_SCALE_FACTOR = 8;

Exécutez la commande SHOW WAREHOUSES pour afficher les détails de l’entrepôt my_wh. Vérifiez que le service d’accélération des requêtes est activé et que le facteur d’échelle maximum pour le service d’accélération des requêtes est 8.

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       |
+---------+-----------+----------+---------+-------------------+-------------------+------------------+---------+--------+------------+------------+--------------+-------------+-----------+--------------+-----------+-------+-------------------------------+-------------------------------+-------------------------------+--------------+---------+---------------------------+-------------------------------------+------------------+---------+----------+--------+-----------+-----------+----------------+

Le service d’accélération des requêtes peut augmenter le taux de consommation des crédits d’un entrepôt. Le facteur d’échelle maximal peut contribuer à limiter le taux de consommation. Voir CREATE WAREHOUSE ou ALTER WAREHOUSE pour plus de détails sur la propriété QUERY_ACCELERATION_MAX_SCALE_FACTOR.

La vue QUERY_ACCELERATION_ELIGIBLE et la fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION peuvent être utiles pour déterminer un facteur d’échelle approprié pour un entrepôt. Pour plus de détails, voir Identification des requêtes et des entrepôts qui pourraient bénéficier de Query Acceleration (dans ce chapitre).

Surveillance de l’utilisation du service Query Acceleration

Utilisation de l’interface Web pour surveiller l’utilisation de Query Acceleration

Une fois que vous avez activé le service d’accélération des requêtes, vous pouvez consulter le panneau Présentation du profil dans Profil des requêtes pour voir les effets des résultats de l’accélération des requêtes.

La capture d’écran suivante montre un exemple des statistiques affichées pour la requête globale. Si plusieurs opérations d’une requête ont été accélérées, les résultats sont agrégés dans cette vue afin que vous puissiez voir la quantité totale de travail effectué par le service d’accélération des requêtes.

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

La section Query Acceleration du panneau Profile Overview comprend les statistiques suivantes :

  • Partitions analysées par le service — nombre de fichiers déchargés dont l’analyse a été confiée au service d’accélération des requêtes.

  • Analyses sélectionnées pour l’accélération — nombre d’analyses de table en cours d’accélération.

Dans les détails de l’opérateur (voir Vue d’ensemble du profil/détails sur l’opérateur pour plus d’informations), cliquez sur l’opérateur pour voir des informations détaillées. La capture d’écran suivante montre un exemple des statistiques affichées pour une opération TableScan :

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

La section Query Acceleration du panneau de détails TableScan comprend les statistiques suivantes :

  • Partitions analysées par le service — nombre de fichiers déchargés dont l’analyse a été confiée au service d’accélération des requêtes.

Utilisation de la vue QUERY_HISTORY Account Usage pour surveiller l’utilisation de Query Acceleration

Pour voir les effets de l’accélération des requêtes sur une requête, vous pouvez utiliser les colonnes suivantes dans Vue QUERY_HISTORY.

  • QUERY_ACCELERATION_BYTES_SCANNED

  • QUERY_ACCELERATION_PARTITIONS_SCANNED

  • QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR

Vous pouvez utiliser ces colonnes pour identifier les requêtes qui ont bénéficié du service d’accélération des requêtes. Pour chaque requête, vous pouvez également déterminer le nombre total de partitions et d’octets analysés par le service d’accélération des requêtes.

Pour la description de chacune de ces colonnes, voir Vue QUERY_HISTORY.

Par exemple, pour trouver les requêtes ayant le plus d’octets analysés par le service d’accélération des requêtes au cours des 24 dernières heures :

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;

Trouver les requêtes avec le plus grand nombre de partitions analysées par le service d’accélération des requêtes dans les 24 dernières heures :

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;

Affichage des informations de facturation pour le service Query Acceleration

L’accélération des requêtes est facturée comme les autres fonctionnalités sans serveur de Snowflake, en ce sens que vous payez à la seconde les ressources utilisées.

Fonctionnalité

Crédits Snowflake par heure de calcul

Calcul géré par Snowflake

Services Cloud

Query Acceleration

1

1

Affichage des informations de facturation dans l’interface Web classique

Si Query Acceleration est activé pour votre compte, la page de facturation de l’interface Web comprend un entrepôt appelé QUERY_ACCELERATION qui indique tous les crédits utilisés par le service dans tous les entrepôts de votre compte.

La capture d’écran ci-dessous montre un exemple des informations de facturation affichées pour l’entrepôt QUERY_ACCELERATION :

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

Visualisation de la facturation en utilisant la vue QUERY_ACCELERATION_HISTORY Account Usage

Vous pouvez voir les données de facturation dans Vue QUERY_ACCELERATION_HISTORY Account Usage.

Exemple

L’exemple suivant renvoie le nombre total de crédits utilisés par chaque entrepôt de votre compte pour le service d’accélération des requêtes (depuis le début du mois) :

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;

Affichage de la facturation à l’aide de la fonction QUERY_ACCELERATION_HISTORY

Vous pouvez également consulter les données de facturation à l’aide de la fonction Information Schema QUERY_ACCELERATION_HISTORY.

Exemple

L’exemple suivant utilise la fonction QUERY_ACCELERATION_HISTORY pour renvoyer des informations sur les requêtes accélérées par ce service au cours des 12 dernières heures :

select * from
table(information_schema.query_acceleration_history(
  date_range_start=>dateadd(H, -12, current_timestamp)));
Revenir au début