Passer au contenu principal

Comment puis-je vérifier que le cache de requêtes est utilisé pour ma requête ?

Voir cet exemple avec clickhouse client et ClickHouse Cloud service. créez une table query_cache_test

Utiliser clickhouse client

remplissez la table avec des données :
activez le journal de trace :
exécutez une requête en demandant l’utilisation du cache de requêtes (en ajoutant SETTINGS use_query_cache=true à la requête) :
exécutez à nouveau la même requête :
Observez maintenant les différences entre les logs TRACE liés à QueryCache, 1re exécution :
lors de la 2e exécution :
Lors de la 1re exécution, aucune entrée n’a logiquement été trouvée (No entry found for query SELECT...), donc ClickHouse a bien stocké (Stored result of query SELECT...) l’entrée pour nous. Lors de la 2e exécution, la requête a utilisé le cache de requêtes, car elle a trouvé l’entrée déjà stockée (Entry found for query SELECT...).

En utilisant uniquement SQL

En exécutant simplement des commandes SQL, sans consulter les journaux de trace du clickhouse client, il est également possible de vérifier si le cache de requêtes est utilisé en consultant les tables system pertinentes :
Dans les derniers résultats, nous voyons 1 QueryCacheMisses lors de la première exécution de la requête SELECT 1 SETTINGS use_query_cache=true;, ainsi qu’un événement QueryCacheHits lié à sa deuxième exécution. Gardez également à l’esprit que la taille maximale par défaut d’une entrée de cache est de 1048576 octets (= 1 MiB) et que, par défaut, les résultats ne sont conservés dans le cache que pendant 60 secondes (vous pouvez par exemple utiliser query_cache_ttl=300 dans SETTINGS pour conserver à la place le résultat d’une requête dans le cache pendant 5 minutes). Vous trouverez des informations plus détaillées sur le cache de requêtes de ClickHouse ici
Dernière modification le 2 juillet 2026