Optimisation du cache de l’entrepôt

Cette rubrique explique comment un propriétaire d’entrepôt ou un administrateur peut optimiser le cache d’un entrepôt afin d’améliorer les performances des requêtes exécutées sur l’entrepôt.

Un entrepôt en cours d’exécution conserve un cache de données de table auquel peuvent accéder les requêtes exécutées sur le même entrepôt. Cela peut améliorer les performances des requêtes suivantes si elles peuvent lire dans le cache plutôt que dans les tables.

Voir également la section Utilisation de résultats de requête persistants, qui explique comment les résultats de requêtes spécifiques peuvent être mis en cache et réutilisés.

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 données analysées à partir du cache

La requête suivante fournit le pourcentage de données analysées à partir du cache, agrégé pour toutes les requêtes et ventilé par entrepôt.

Si vous avez des requêtes qui peuvent bénéficier de l’analyse des données du cache (par exemple, des requêtes fréquentes et similaires) et que le pourcentage de données analysées à partir du cache est faible, l’optimisation du cache pourrait vous permettre d’améliorer les performances.

SELECT warehouse_name
  ,COUNT(*) AS query_count
  ,SUM(bytes_scanned) AS bytes_scanned
  ,SUM(bytes_scanned*percentage_scanned_from_cache) AS bytes_scanned_from_cache
  ,SUM(bytes_scanned*percentage_scanned_from_cache) / SUM(bytes_scanned) AS percent_scanned_from_cache
FROM snowflake.account_usage.query_history
WHERE start_time >= dateadd(month,-1,current_timestamp())
  AND bytes_scanned > 0
GROUP BY 1
ORDER BY 5;
Copy

À propos du cache et de la suspension automatique

Le paramètre de suspension automatique de l’entrepôt peut avoir un impact direct sur les performances des requêtes, car le cache est supprimé lorsque l’entrepôt est suspendu. Si un entrepôt exécute des requêtes fréquentes et similaires, il n’est pas forcément judicieux de suspendre l’entrepôt entre deux requêtes, car le cache risque d’être supprimé avant l’exécution de la requête suivante.

Vous pouvez utiliser les lignes directrices générales suivantes pour fixer cette limite de temps de suspension automatique :

  • Pour les tâches, Snowflake recommande une suspension immédiate.

  • Pour les cas d’utilisation DevOps, DataOps et Data Science, Snowflake recommande de définir la suspension automatique à environ 5 minutes, car le cache n’est pas aussi important pour les requêtes ad hoc et uniques.

  • Pour les entrepôts de requêtes, par exemple les cas d’utilisation BI et SELECT, Snowflake recommande de définir la suspension automatique à au moins 10 minutes pour maintenir le cache pour les utilisateurs.

Considérations relatives aux clients

Gardez à l’esprit qu’un entrepôt en cours d’exécution consomme des crédits même s’il ne traite pas de requêtes. Veillez à ce que le réglage de la suspension automatique corresponde à votre charge de travail. Par exemple, si un entrepôt exécute une requête toutes les 30 minutes, il n’est pas judicieux de fixer le paramètre de suspension automatique à 10 minutes. L’entrepôt consommera des crédits en restant inactif sans bénéficier des avantages d’un cache, car il sera supprimé avant l’exécution de la requête suivante.

Comment configurer la suspension automatique

Pour modifier le temps qui doit s’écouler avant qu’un entrepôt soit suspendu et que son cache soit supprimé :

Snowsight:
  1. Connectez-vous à Snowsight.

  2. Accédez à Admin » Warehouses.

  3. Recherchez l’entrepôt et sélectionnez » Edit.

  4. Assurez-vous que Auto Suspend est activé.

  5. Dans le champ Suspend After (min) entrez le nombre de minutes qui doivent s’écouler avant que l’entrepôt ne soit suspendu.

  6. Sélectionnez Save Warehouse.

SQL:

La commande ALTER WAREHOUSE permet de modifier la limite de temps de suspension automatique, qui est spécifiée en secondes et non en minutes. Par exemple :

ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 600;
Copy