Tentative d’accélération des requêtes¶
Cette rubrique donne un aperçu de la manière dont un propriétaire ou un administrateur d’entrepôt peut utiliser Query Acceleration Service pour améliorer les performances des requêtes exécutées sur un entrepôt. Pour plus de détails sur l’accélération des requêtes, reportez-vous à Utilisation du service Query Acceleration.
Query Acceleration Service décharge certaines parties du traitement des requêtes vers des ressources de calcul sans serveur, ce qui accélère le traitement d’une requête tout en réduisant sa demande sur les ressources de calcul de l’entrepôt.
Lorsqu’un entrepôt a des requêtes aberrantes (c’est-à-dire des requêtes qui utilisent plus de ressources qu’une requête classique), Query Acceleration Service peut également améliorer les performances des autres requêtes de l’entrepôt parce que les demandes de calcul supplémentaires des requêtes aberrantes sont déchargées sur des ressources de calcul sans serveur.
Parmi les charges de travail susceptibles de bénéficier de Query Acceleration Service, on peut citer les analyses ad hoc, les charges de travail dont le volume de données par requête est imprévisible et les requêtes avec de grandes analyses et des filtres sélectifs.
Note
Vous devez avoir accès à la base de données SNOWFLAKE partagée pour exécuter les requêtes de diagnostic fournies dans cette rubrique. Par défaut, seul le rôle ACCOUNTADMIN dispose des privilèges nécessaires à l’exécution des requêtes.
Recherche de candidats pour l’accélération des requêtes¶
Vous pouvez utiliser une fonction ou des requêtes pour déterminer si l’activation de Query Acceleration Service peut améliorer les performances d’une requête ou d’un ensemble de requêtes.
Fonction : déterminer si une requête spécifique peut être bénéfique.
La fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION vous permet de vérifier si une requête spécifique est un bon candidat pour Query Acceleration Service.
La fonction accepte un identifiant de requête comme seul argument. L’ajout de la fonction dans la fonction PARSE_JSON facilite l’interprétation des résultats. Par exemple :
select parse_json(system$estimate_query_acceleration('8cd54bf0-1651-5b1c-ac9c-6a9582ebd20f'));
Si une requête est candidate à Query Acceleration Service et n’a pas encore été accélérée, le status
de la réponse est eligible
. Un statut ineligible
indique que la requête ne bénéficiera pas de l’activation de Query Acceleration Service pour un entrepôt.
Pour plus d’informations sur l’évaluation de Query Acceleration Service pour une requête particulière, y compris les temps d’exécution estimés pour différents facteurs d’échelle, reportez-vous à la documentation de référence.
Requête : meilleurs candidats pour les requêtes dans les entrepôts
Cette requête identifie les requêtes qui pourraient bénéficier le plus de Query Acceleration Service en calculant le temps d’exécution de la requête qui pourrait être accéléré :
SELECT query_id, eligible_query_acceleration_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
ORDER BY eligible_query_acceleration_time DESC;
Requête : meilleurs candidats pour l’entrepôt par temps d’exécution
Cette requête identifie les entrepôts qui pourraient bénéficier le plus du service de Query Acceleration Service. Pour chaque entrepôt, elle calcule 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 SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_ELIGIBLE
GROUP BY warehouse_name
ORDER BY total_eligible_time DESC;
Requête : meilleurs candidats pour l’entrepôt par nombre de requêtes
Cette requête identifie les entrepôts au cours d’une période donnée qui présentent le plus grand nombre de requêtes pouvant bénéficier de Query Acceleration Service.
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;
Considérations relatives aux clients¶
Les ressources de calcul sans serveur louées par un entrepôt pour l’accélération des requêtes consomment des crédits indépendamment des crédits consommés par l’entrepôt, et sont facturées séparément.
Query Acceleration Service est activé pour l’ensemble d’un entrepôt, mais contrairement à l’augmentation de la taille d’un entrepôt, ce service n’est utilisé que pour les requêtes qui bénéficient d’une puissance de calcul accrue. Cela peut s’avérer rentable pour les entrepôts qui exécutent une charge de travail mixte, car les requêtes qui ne nécessitent pas de ressources de calcul supplémentaires n’entraînent pas le surcoût lié à l’utilisation d’un entrepôt plus grand.
Vous pouvez utiliser le facteur d’échelle de l’entrepôt pour contrôler le coût de Query Acceleration Service. Ce facteur d’échelle, qui est un multiplicateur de la consommation de crédit de l’entrepôt, fixe une limite à la quantité de calcul sans serveur pouvant être utilisée par un entrepôt. Par exemple, si un entrepôt a un facteur d’échelle de 5, le taux de consommation de crédit des ressources informatiques sans serveur ne peut pas dépasser le taux de consommation de l’entrepôt de plus de 5 fois.
Vous pouvez utiliser la fonction SYSTEM$ESTIMATE_QUERY_ACCELERATION pour évaluer l’impact du facteur d’échelle sur les performances d’une requête.
Pour maximiser les performances sans tenir compte des coûts, réglez le facteur d’échelle sur 0.
Comment activer Query Acceleration Service¶
Pour activer Query Acceleration Service en maximisant les performances, utilisez la commande ALTER WAREHOUSE comme suit :
ALTER WAREHOUSE my_wh SET
ENABLE_QUERY_ACCELERATION = true
QUERY_ACCELERATION_MAX_SCALE_FACTOR = 0;