Passer au contenu principal

Utilisation de la table system.query_log

La requête suivante, très utile, montre lesquelles de vos requêtes exécutées ont consommé le plus de mémoire. Quelques remarques à propos de cette requête :
  • les résultats sont calculés sur les dernières 24 heures (now() - toIntervalDay(1))), mais vous pouvez facilement modifier l’intervalle de temps
  • elle suppose que vous disposez d’un cluster nommé default, qui est le nom de votre cluster dans ClickHouse Cloud. Remplacez default par le nom de votre cluster
  • si vous n’avez pas de cluster, consultez la requête indiquée à la fin de cet article
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    clusterAllReplicas(default, system.query_log)
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
La réponse ressemble à ceci :
┌─nb_query─┬─user────┬─query─────────────────────────────────────────────────────────┬───memory─┬─normalized_query_hash─┐
│       11 │ default │ select version()                                              │ 46178924 │   7202516440347714159 │
│        2 │ default │ SELECT * FROM "system"."table_functions" LIMIT 31 OFFSET 0    │  8391544 │  12830067173062987695 │
└──────────┴─────────┴───────────────────────────────────────────────────────────────┴──────────┴───────────────────────┘
Si vous n’avez pas de table system.query_log, c’est probablement que la journalisation des requêtes n’est pas activée. Consultez les détails du paramètre query_log pour savoir comment l’activer.
Si vous n’avez pas de cluster, vous pouvez simplement interroger directement votre table system.query_log :
SELECT
    count() as nb_query,
    user,
    query,
    sum(memory_usage) AS memory,
    normalized_query_hash
FROM
    system.query_log
WHERE
    (event_time >= (now() - toIntervalDay(1)))
    AND query_kind = 'Select'
    AND type = 'QueryFinish'
    and user != 'monitoring-internal'
GROUP BY
    normalized_query_hash,
    query,
    user
ORDER BY
    memory DESC;
Dernière modification le 29 juin 2026