Description
Contient les identifiants des requêtes exécutées dans la session en cours, dans l’ordre d’exécution. Utilisez-la pour retrouver « les requêtes que je viens d’exécuter » dans system.query_log sans avoir à affecter un query_id côté client ni à étiqueter les requêtes avec log_comment.
Le contenu est propre à la session : chaque session ne voit que son propre historique, et les requêtes des autres sessions n’y apparaissent jamais.
Un identifiant de requête est enregistré au démarrage de la requête, par conséquent :
- La requête en cours d’exécution est déjà visible lorsqu’elle interroge la table.
- Les requêtes en échec sont également enregistrées — récupérer l’identifiant d’une requête qui vient d’échouer est l’un des principaux cas d’usage.
Les requêtes internes (flushes des journaux système et opérations similaires) ne sont pas enregistrées. Les sous-requêtes que les requêtes distribuées exécutent sur des shards distants ne le sont pas non plus : seule la requête initiatrice apparaît, dans la session de l’initiator.
Portée de la session par interface
- Connexions natives/TCP (
clickhouse-client, drivers) et clickhouse-local : la session correspond à la connexion ; l’historique s’accumule donc sur l’ensemble des requêtes de la connexion, y compris lors des appels du client comportant plusieurs requêtes.
- HTTP avec le Paramètre
session_id : l’historique est conservé d’une requête à l’autre dès lors qu’elles transmettent le même session_id, jusqu’à l’expiration de la session.
- HTTP sans
session_id : chaque requête constitue sa propre session ; la table n’affiche donc jamais que la requête en cours.
Taille de l’historique
L’historique est un buffer circulaire dont la taille est limitée par le paramètre de session session_query_ids_history_size (valeur par défaut : 1000) ; lorsque l’historique dépasse cette taille, les entries les plus anciennes sont évincées en premier. La valeur 0 désactive l’enregistrement ; les entries enregistrées auparavant restent dans la table jusqu’à ce qu’elles soient truncated ou évincées.
Ce PARAMÈTRE est lu au démarrage de la requête, avant que celle-ci ne soit parsed : une SETTINGS clause présente dans la requête elle-même n’a donc aucune incidence sur son enregistrement ; utilisez plutôt SET, un HTTP URL Paramètre ou un settings profile.
TRUNCATE
TRUNCATE TABLE system.session_query_ids efface l’historique de la session en cours. Le compteur de séquence n’est pas réinitialisé : les valeurs sequence_number ne sont donc jamais réutilisées au sein d’une même session.
Colonnes
sequence_number (UInt64) — Position de la requête au sein de la session, croissante de façon monotone.
query_id (String) — L’identifiant de la requête ; peut être joint à system.query_log.
Exemple
Exécutez quelques requêtes, puis récupérez leurs détails depuis system.query_log :
La requête en cours est enregistrée dès son démarrage : elle apparaît donc comme la dernière entry. Les timestamps, le status et tous les autres détails sont accessibles en joignant system.query_log :
Voir aussi
- system.query_log - Détails des requêtes exécutées.
- Paramètre
session_query_ids_history_size.
Dernière modification le 26 septembre 2026