Passer au contenu principal
Interroger dans ClickHouse CloudLes données de cette table système sont stockées localement sur chaque nœud de ClickHouse Cloud. Pour obtenir une vue complète de l’ensemble des données, il faut donc utiliser la fonction clusterAllReplicas. Consultez cette page pour plus de détails.

Description

Stocke les métadonnées et les statistiques relatives aux requêtes exécutées, telles que l’heure de début, la durée, les messages d’erreur, l’utilisation des ressources et d’autres détails d’exécution. Elle ne stocke pas les résultats des requêtes. Vous pouvez modifier les paramètres de journalisation des requêtes dans la section query_log de la configuration du serveur. Vous pouvez désactiver la journalisation des requêtes en définissant log_queries = 0. Nous ne recommandons pas de désactiver la journalisation, car les informations de cette table sont importantes pour résoudre les problèmes. La période de vidage des données est définie par le paramètre flush_interval_milliseconds dans la section des paramètres du serveur query_log. Pour forcer le vidage, utilisez la requête SYSTEM FLUSH LOGS. ClickHouse ne supprime pas automatiquement les données de la table. Voir Introduction pour plus de détails. La table system.query_log enregistre deux types de requêtes :
  1. Les requêtes initiales exécutées directement par le client.
  2. Les requêtes enfants initiées par d’autres requêtes (pour l’exécution distribuée des requêtes). Pour ces types de requêtes, les informations sur les requêtes parentes sont affichées dans les colonnes initial_*.
Chaque requête crée une ou deux lignes dans la table query_log, selon le statut (voir la colonne type) de la requête :
  1. Si l’exécution de la requête a réussi, deux lignes avec les types QueryStart et QueryFinish sont créées.
  2. Si une erreur s’est produite pendant le traitement de la requête, deux événements avec les types QueryStart et ExceptionWhileProcessing sont créés.
  3. Si une erreur s’est produite avant le lancement de la requête, un seul événement avec le type ExceptionBeforeStart est créé.
Vous pouvez utiliser le paramètre log_queries_probability pour réduire le nombre de requêtes enregistrées dans la table query_log. Vous pouvez utiliser le paramètre log_formatted_queries pour consigner les requêtes mises en forme dans la colonne formatted_query.

Colonnes

  • hostname (LowCardinality(String)) — Nom d’hôte du serveur qui exécute la requête.
  • type (Enum8(‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4)) — Type d’événement survenu lors de l’exécution de la requête. Valeurs : QueryStart — démarrage réussi de l’exécution de la requête, QueryFinish — fin réussie de l’exécution de la requête, ExceptionBeforeStart — exception avant le début de l’exécution de la requête, ExceptionWhileProcessing — exception pendant l’exécution de la requête.
  • event_date (Date) — Date de début de la requête.
  • event_time (DateTime) — Heure de début de la requête.
  • event_time_microseconds (DateTime64(6)) — Heure de début de la requête avec une précision à la microseconde.
  • query_start_time (DateTime) — Heure de début de l’exécution de la requête.
  • query_start_time_microseconds (DateTime64(6)) — Heure de début de l’exécution de la requête avec une précision à la microseconde.
  • query_duration_ms (UInt64) — Durée d’exécution de la requête en millisecondes.
  • read_rows (UInt64) — Nombre total de lignes lues depuis toutes les tables et fonctions de table participant à la requête. Cela inclut les sous-requêtes classiques, les sous-requêtes pour IN et JOIN. Pour les requêtes distribuées, read_rows inclut le nombre total de lignes lues sur toutes les répliques. Chaque réplique envoie sa valeur read_rows, et le serveur initiateur de la requête additionne toutes les valeurs reçues et locales. Les volumes du cache n’affectent pas cette valeur.
  • read_bytes (UInt64) — Nombre total d’octets lus depuis toutes les tables et fonctions de table participant à la requête. Cela inclut les sous-requêtes classiques, les sous-requêtes pour IN et JOIN. Pour les requêtes distribuées, read_bytes inclut le nombre total de lignes lues sur toutes les répliques. Chaque réplique envoie sa valeur read_bytes, et le serveur initiateur de la requête additionne toutes les valeurs reçues et locales. Les volumes du cache n’affectent pas cette valeur.
  • written_rows (UInt64) — Nombre de lignes écrites par la requête, y compris les lignes écrites par les insertions en aval déclenchées par le pipeline, telles que les vues matérialisées attachées. Pour une insertion synchrone, ces lignes en aval sont enregistrées dans l’entrée query_kind = Insert ; pour une insertion asynchrone, elles sont enregistrées dans l’entrée query_kind = AsyncInsertFlush, tandis que l’entrée Insert côté client n’enregistre que les lignes acceptées du client. Pour les requêtes qui n’écrivent pas de lignes, la valeur est 0.
  • written_bytes (UInt64) — Nombre d’octets écrits par la requête (non compressés), y compris les octets écrits par les insertions en aval déclenchées par le pipeline, telles que les vues matérialisées attachées. Pour une insertion synchrone, ces octets en aval sont enregistrés dans l’entrée query_kind = Insert ; pour une insertion asynchrone, ils sont enregistrés dans l’entrée query_kind = AsyncInsertFlush, tandis que l’entrée Insert côté client n’enregistre que les octets acceptés du client. Pour les requêtes qui n’écrivent pas de données, la valeur est 0.
  • result_rows (UInt64) — Nombre de lignes dans le résultat d’une requête SELECT, ou nombre de lignes écrites par une insertion. Pour une insertion synchrone, cela inclut les lignes écrites par les insertions en aval déclenchées par le pipeline (telles que les vues matérialisées attachées) dans l’entrée query_kind = Insert ; pour une insertion asynchrone, ces lignes en aval sont enregistrées dans l’entrée query_kind = AsyncInsertFlush, tandis que l’entrée Insert côté client n’enregistre que les lignes acceptées du client.
  • result_bytes (UInt64) — Volume de RAM, en octets, utilisé pour stocker le résultat d’une requête.
  • memory_usage (UInt64) — Consommation de mémoire de la requête.
  • current_database (LowCardinality(String)) — Nom de la base de données courante.
  • query (String) — Texte de la requête.
  • formatted_query (String) — Texte mis en forme de la requête.
  • normalized_query_hash (UInt64) — Une valeur de hachage numérique, identique par exemple pour des requêtes qui ne diffèrent que par les valeurs des littéraux.
  • query_kind (LowCardinality(String)) — Type de la requête.
  • databases (Array(LowCardinality(String))) — Noms des bases de données présentes dans la requête.
  • tables (Array(LowCardinality(String))) — Noms des tables présentes dans la requête.
  • columns (Array(LowCardinality(String))) — Noms des colonnes présentes dans la requête.
  • partitions (Array(LowCardinality(String))) — Noms des partitions présentes dans la requête.
  • projections (Array(LowCardinality(String))) — Noms des projections utilisées lors de l’exécution de la requête.
  • views (Array(LowCardinality(String))) — Noms des vues (matérialisées ou live) présentes dans la requête.
  • exception_code (Int32) — Code de l’exception.
  • exception (String) — Message d’exception.
  • stack_trace (String) — Trace de pile. Chaîne vide si la requête s’est terminée avec succès.
  • is_initial_query (UInt8) — Type de requête. Valeurs possibles : 1 — la requête a été initiée par le client, 0 — la requête a été initiée par une autre requête dans le cadre de l’exécution distribuée des requêtes.
  • connection_address (IPv6) — Adresse IP du client à partir de laquelle la connexion a été établie. En cas de connexion via un proxy, il s’agira de l’adresse du proxy.
  • connection_port (UInt16) — Port client à partir duquel la connexion a été établie. En cas de connexion via un proxy, il s’agira du port du proxy.
  • user (LowCardinality(String)) — Nom de l’utilisateur qui a initié la requête en cours.
  • query_id (String) — ID de la requête.
  • address (IPv6) — Adresse IP utilisée pour effectuer la requête. En cas de connexion via un proxy et si auth_use_forwarded_address est défini, il s’agira de l’adresse du client plutôt que de celle du proxy.
  • port (UInt16) — Port client utilisé pour effectuer la requête. En cas de connexion via un proxy et si auth_use_forwarded_address est défini, il s’agira du port du client plutôt que de celui du proxy.
  • initial_user (LowCardinality(String)) — Nom de l’utilisateur qui a exécuté la requête initiale (pour l’exécution distribuée des requêtes).
  • initial_query_id (String) — ID de la requête initiale (pour l’exécution distribuée des requêtes).
  • initial_address (IPv6) — Adresse IP depuis laquelle la requête parente a été lancée.
  • initial_port (UInt16) — Port client utilisé pour exécuter la requête parente.
  • initial_query_start_time (DateTime) — Heure de début de la requête initiale (pour l’exécution distribuée des requêtes).
  • initial_query_start_time_microseconds (DateTime64(6)) — Heure de début de la requête initiale avec une précision à la microseconde (pour l’exécution distribuée des requêtes).
  • authenticated_user (LowCardinality(String)) — Nom de l’utilisateur authentifié dans la session.
  • interface (UInt8) — Interface à partir de laquelle la requête a été lancée. Valeurs possibles : 1 — TCP, 2 — HTTP.
  • is_secure (UInt8) — Indique si une requête a été exécutée via une interface sécurisée.
  • os_user (LowCardinality(String)) — Nom d’utilisateur du système d’exploitation qui exécute clickhouse-client.
  • client_hostname (LowCardinality(String)) — Nom d’hôte de la machine cliente sur laquelle clickhouse-client ou un autre client TCP s’exécute.
  • client_name (LowCardinality(String)) — Nom de clickhouse-client ou d’un autre client TCP.
  • client_agent (LowCardinality(String)) — L’agent IA de développement qui a invoqué le client (par exemple, claude-code ou cursor), détecté à partir des variables d’environnement. Vide si aucun agent n’a été détecté.
  • client_revision (UInt32) — Révision de clickhouse-client ou d’un autre client TCP.
  • client_version_major (UInt32) — Version majeure de clickhouse-client ou d’un autre client TCP.
  • client_version_minor (UInt32) — Version mineure de clickhouse-client ou d’un autre client TCP.
  • client_version_patch (UInt32) — Composant correctif de la version de clickhouse-client ou d’un autre client TCP.
  • script_query_number (UInt32) — Numéro de la requête dans un script contenant plusieurs requêtes pour clickhouse-client.
  • script_line_number (UInt32) — Numéro de la ligne où commence la requête dans un script contenant plusieurs requêtes pour clickhouse-client.
  • http_method (UInt8) — Méthode HTTP qui a lancé la requête. Valeurs possibles : 0 — La requête a été lancée depuis l’interface TCP, 1 — La méthode GET a été utilisée, 2 — La méthode POST a été utilisée.
  • http_user_agent (LowCardinality(String)) — En-tête HTTP UserAgent transmis dans la requête HTTP.
  • http_referer (String) — En-tête HTTP Referer transmis dans la requête HTTP (contient une adresse absolue ou partielle de la page à l’origine de la requête).
  • forwarded_for (String) — En-tête HTTP X-Forwarded-For transmis dans la requête HTTP.
  • quota_key (String) — Clé de quota spécifiée dans le paramètre quotas (voir keyed).
  • distributed_depth (UInt64) — Nombre de fois qu’une requête a été transférée entre serveurs.
  • revision (UInt32) — Révision de ClickHouse.
  • log_comment (String) — Commentaire du journal. Il peut être défini sur une chaîne arbitraire ne dépassant pas max_query_size. Chaîne vide s’il n’est pas défini.
  • thread_ids (Array(UInt64)) — Identifiants des threads qui participent à l’exécution de la requête. Ces threads peuvent ne pas s’être exécutés simultanément.
  • peak_threads_usage (UInt64) — Nombre maximal de threads simultanés exécutant la requête.
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — ProfileEvents qui mesurent différentes métriques. Leur description se trouve dans la table system.events.
  • Settings (Map(LowCardinality(String), LowCardinality(String))) — Paramètres modifiés lorsque le client a exécuté la requête. Pour activer la journalisation des modifications de paramètres, définissez le paramètre log_query_settings sur 1.
  • used_aggregate_functions (Array(LowCardinality(String))) — Noms canoniques des fonctions d’agrégation utilisées pendant l’exécution de la requête.
  • used_aggregate_function_combinators (Array(LowCardinality(String))) — Noms canoniques des combinateurs de fonctions d’agrégation utilisés lors de l’exécution de la requête.
  • used_database_engines (Array(LowCardinality(String))) — Noms canoniques des moteurs de base de données utilisés lors de l’exécution de la requête.
  • used_data_type_families (Array(LowCardinality(String))) — Noms canoniques des familles de types de données utilisées lors de l’exécution de la requête.
  • used_dictionaries (Array(LowCardinality(String))) — Noms canoniques des dictionnaires utilisés lors de l’exécution de la requête.
  • used_formats (Array(LowCardinality(String))) — Noms canoniques des formats utilisés lors de l’exécution de la requête.
  • used_functions (Array(LowCardinality(String))) — Noms canoniques des fonctions utilisées lors de l’exécution de la requête.
  • used_storages (Array(LowCardinality(String))) — Noms canoniques des stockages utilisés lors de l’exécution de la requête.
  • used_table_functions (Array(LowCardinality(String))) — Noms canoniques des fonctions de table utilisées lors de l’exécution de la requête.
  • used_executable_user_defined_functions (Array(LowCardinality(String))) — Noms canoniques des fonctions exécutables définies par l’utilisateur utilisées lors de l’exécution de la requête.
  • used_sql_user_defined_functions (Array(LowCardinality(String))) — Noms canoniques des fonctions SQL définies par l’utilisateur utilisées lors de l’exécution de la requête.
  • used_row_policies (Array(LowCardinality(String))) — Liste des noms des politiques de ligne utilisées lors de l’exécution de la requête.
  • used_privileges (Array(LowCardinality(String))) — Privilèges dont la vérification a réussi lors de l’exécution de la requête.
  • missing_privileges (Array(LowCardinality(String))) — Privilèges manquants lors de l’exécution de la requête.
  • transaction_id (Tuple(UInt64, UInt64, UUID)) — Identifiant de la transaction dans le cadre de laquelle cette requête a été exécutée.
  • query_cache_usage (Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — Utilisation du cache de requêtes lors de l’exécution de la requête. Valeurs : ‘Unknown’ = statut inconnu, ‘None’ = le résultat de la requête n’a été ni écrit dans le cache de résultats de requêtes ni lu depuis celui-ci, ‘Write’ = le résultat de la requête a été écrit dans le cache de résultats de requêtes, ‘Read’ = le résultat de la requête a été lu depuis le cache de résultats de requêtes.
  • asynchronous_read_counters (Map(LowCardinality(String), UInt64)) — Métriques de lecture asynchrone.
  • is_internal (UInt8) — Indique s’il s’agit d’une requête auxiliaire exécutée en interne.
Alias :
  • ProfileEvents.Names — alias de mapKeys(ProfileEvents).
  • ProfileEvents.Values — alias de mapValues(ProfileEvents).
  • Settings.Names — alias de mapKeys(Settings).
  • Settings.Values — alias de mapValues(Settings).

Exemples

Exemple simple
SELECT * FROM system.query_log WHERE type = 'QueryFinish' ORDER BY query_start_time DESC LIMIT 1 FORMAT Vertical;
Row 1:
──────
hostname:                              clickhouse.eu-central1.internal
type:                                  QueryFinish
event_date:                            2021-11-03
event_time:                            2021-11-03 16:13:54
event_time_microseconds:               2021-11-03 16:13:54.953024
query_start_time:                      2021-11-03 16:13:54
query_start_time_microseconds:         2021-11-03 16:13:54.952325
query_duration_ms:                     0
read_rows:                             69
read_bytes:                            6187
written_rows:                          0
written_bytes:                         0
result_rows:                           69
result_bytes:                          48256
memory_usage:                          0
current_database:                      default
query:                                 DESCRIBE TABLE system.query_log
formatted_query:
normalized_query_hash:                 8274064835331539124
query_kind:
databases:                             []
tables:                                []
columns:                               []
projections:                           []
views:                                 []
exception_code:                        0
exception:
stack_trace:
is_initial_query:                      1
user:                                  default
query_id:                              7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
address:                               ::ffff:127.0.0.1
port:                                  40452
initial_user:                          default
initial_query_id:                      7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
initial_address:                       ::ffff:127.0.0.1
initial_port:                          40452
initial_query_start_time:              2021-11-03 16:13:54
initial_query_start_time_microseconds: 2021-11-03 16:13:54.952325
interface:                             1
os_user:                               sevirov
client_hostname:                       clickhouse.eu-central1.internal
client_name:                           ClickHouse
client_revision:                       54449
client_version_major:                  21
client_version_minor:                  10
client_version_patch:                  1
http_method:                           0
http_user_agent:
http_referer:
forwarded_for:
quota_key:
revision:                              54456
log_comment:
thread_ids:                            [30776,31174]
ProfileEvents:                         {'Query':1,'NetworkSendElapsedMicroseconds':59,'NetworkSendBytes':2643,'SelectedRows':69,'SelectedBytes':6187,'ContextLock':9,'RWLockAcquiredReadLocks':1,'RealTimeMicroseconds':817,'UserTimeMicroseconds':427,'SystemTimeMicroseconds':212,'OSCPUVirtualTimeMicroseconds':639,'OSReadChars':894,'OSWriteChars':319}
Settings:                              {'load_balancing':'random','max_memory_usage':'10000000000'}
used_aggregate_functions:              []
used_aggregate_function_combinators:   []
used_database_engines:                 []
used_data_type_families:               []
used_dictionaries:                     []
used_formats:                          []
used_functions:                        []
used_storages:                         []
used_table_functions:                  []
used_executable_user_defined_functions:[]
used_sql_user_defined_functions:       []
used_privileges:                       []
missing_privileges:                    []
query_cache_usage:                     None
Exemple Cloud Dans ClickHouse Cloud, system.query_log est local à chaque nœud ; pour voir tous les enregistrements, vous devez interroger via clusterAllReplicas. Par exemple, pour agréger les lignes de query_log de chaque réplique du cluster « default », vous pouvez écrire :
SELECT * 
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

Voir aussi

  • system.query_thread_log — Cette table contient des informations sur chaque thread d’exécution d’une requête.
Dernière modification le 25 juin 2026