Skip to main content

Description

Affiche à l’utilisateur courant ses propres enregistrements du journal de requêtes. Lit la table du journal de requêtes configurée par les paramètres du serveur query_log.database et query_log.table (system.query_log par défaut) et renvoie uniquement les lignes dont l’utilisateur à l’origine de la requête est égal à currentUser() (cet utilisateur est obtenu à partir de initial_user lorsqu’il est défini, sinon à partir de user). Contrairement à la table du journal de requêtes elle-même, system.user_query_log peut être lue sans aucun privilège. Les utilisateurs peuvent donc consulter leurs propres requêtes sans avoir accès à celles des autres. Cette fonctionnalité n’est prise en charge que lorsque le journal de requêtes est stocké localement. Si query_log.engine est configuré avec Distributed ou tout autre moteur qui délègue les lectures à un autre serveur, system.user_query_log refuse de le lire et lève une exception, car le contrôle d’accès requis ne peut pas être appliqué de part et d’autre d’une limite entre serveurs utilisant le protocole ClickHouse. Dans ce cas, désactivez la table avec query_log.enable_user_query_log = 0. La table peut être désactivée à l’aide du paramètre de serveur query_log.enable_user_query_log. Si le journal de requêtes n’est pas configuré ou si sa table n’a pas encore été créée, system.user_query_log est vide. Les conditions sur la partition et les colonnes clés du journal de requêtes (event_date, event_time, query_start_time, query_id, type et autres colonnes scalaires similaires) comparées à des constantes sont appliquées directement à la table de journal de requêtes sous-jacente. Ainsi, les recherches ordinaires telles que celle de l’exemple ci-dessous bénéficient de l’élagage des partitions et ne parcourent pas l’intégralité du journal conservé.
Si une table nommée system.user_query_log a été créée avant la mise à niveau vers une version de ClickHouse fournissant cette table, le serveur ne démarrera pas tant que la table existante n’aura pas été renommée ou supprimée, ou que query_log.enable_user_query_log n’aura pas été défini sur 0.

Colonnes

  • hostname (String) — Nom d’hôte du serveur exécutant 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émarrage 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 dans l’ensemble des tables et fonctions de table participant à la requête. Cela inclut les sous-requêtes standard ainsi que les sous-requêtes utilisées avec 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 de cache n’affectent pas cette valeur.
  • read_bytes (UInt64) — Nombre total d’octets lus dans l’ensemble des tables et fonctions de table participant à la requête. Cela inclut les sous-requêtes standard ainsi que les sous-requêtes utilisées avec IN et JOIN. Pour les requêtes distribuées, read_bytes inclut le nombre total d’octets lus 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 de 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 enregistre uniquement les lignes acceptées du client. Pour les requêtes qui n’écrivent pas de lignes, cette 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 enregistre uniquement les octets acceptés du client. Pour les requêtes qui n’écrivent pas de données, cette 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 enregistre uniquement les lignes acceptées du client.
  • result_bytes (UInt64) — Quantité de mémoire vive, en octets, utilisée pour stocker le résultat d’une requête.
  • memory_usage (UInt64) — Consommation de mémoire de la requête.
  • current_database (String) — Nom de la base de données courante.
  • query (String) — Chaîne de requête.
  • formatted_query (String) — Chaîne de requête formatée.
  • normalized_query_hash (UInt64) — 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 (String) — Type de la requête.
  • databases (Array(String)) — Noms des bases de données présentes dans la requête.
  • tables (Array(String)) — Noms des tables présentes dans la requête.
  • columns (Array(String)) — Noms des colonnes présentes dans la requête.
  • partitions (Array(String)) — Noms des partitions présentes dans la requête.
  • projections (Array(String)) — Noms des projections utilisées lors de l’exécution de la requête.
  • views (Array(String)) — Noms des vues (matérialisées ou en direct) présentes dans la requête.
  • exception_code (Int32) — Code d’exception.
  • exception (String) — Message d’exception.
  • stack_trace (String) — Trace de pile. Chaîne vide si la requête s’est exécutée correctement.
  • is_initial_query (UInt8) — Type de requête. Valeurs possibles : 1 — requête initiée par le client, 0 — requête initiée par une autre requête dans le cadre de l’exécution d’une requête distribuée.
  • connection_address (IPv6) — Adresse IP du client depuis laquelle la connexion a été établie. En cas de connexion via un proxy, il s’agit de l’adresse du proxy.
  • connection_port (UInt16) — Port client depuis lequel la connexion a été établie. En cas de connexion via un proxy, il s’agit du port du proxy.
  • user (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’agit 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’agit du port du client plutôt que de celui du proxy.
  • initial_user (String) — Nom de l’utilisateur qui a exécuté la requête initiale (pour l’exécution d’une requête distribuée).
  • initial_query_id (String) — ID de la requête initiale (pour l’exécution d’une requête distribuée).
  • initial_address (IPv6) — Adresse IP depuis laquelle la requête parente a été lancée.
  • initial_port (UInt16) — Port client utilisé pour effectuer la requête parente.
  • initial_query_start_time (DateTime) — Heure de début de la requête initiale (pour l’exécution d’une requête distribuée).
  • 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 d’une requête distribuée).
  • authenticated_user (String) — Nom de l’utilisateur authentifié dans la session.
  • interface (UInt8) — Interface depuis laquelle la requête a été initié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 (String) — Nom d’utilisateur du système d’exploitation exécutant clickhouse-client.
  • client_hostname (String) — Nom d’hôte de la machine cliente sur laquelle clickhouse-client ou un autre client TCP est exécuté.
  • client_name (String) — Nom de clickhouse-client ou d’un autre client TCP.
  • client_agent (String) — Agent de programmation IA ayant invoqué le client (par ex. claude-code, 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ù débute la requête dans un script contenant plusieurs requêtes pour clickhouse-client.
  • http_method (UInt8) — Méthode HTTP ayant initié la requête. Valeurs possibles : 0 - requête lancée depuis l’interface TCP, 1 - méthode GET utilisée, 2 - méthode POST utilisée, 4 - méthode PUT utilisée, 5 - méthode DELETE utilisée, 6 - méthode HEAD utilisée.
  • http_user_agent (String) — En-tête HTTP UserAgent transmis avec la requête HTTP.
  • http_referer (String) — En-tête HTTP Referer transmis avec la requête HTTP (contient l’adresse absolue ou partielle de la page à l’origine de la requête).
  • forwarded_for (String) — En-tête HTTP X-Forwarded-For transmis avec 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é transmise entre des serveurs.
  • revision (UInt32) — Révision de ClickHouse.
  • http_handler_name (String) — Nom du handler HTTP défini en SQL (CREATE HANDLER) ayant invoqué la requête. Vide si la requête n’a pas été invoquée via un tel handler.
  • http_request_url (String) — Chemin de la requête HTTP (sans la chaîne de requête) ayant invoqué la requête. La chaîne de requête est omise afin que les paramètres sensibles de la requête ne soient pas persistés. Vide pour les requêtes non HTTP.
  • log_comment (String) — Commentaire de Log. 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 participant à 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 exécutant simultanément la requête.
  • ProfileEvents (Map(String, UInt64)) — ProfileEvents mesurant différentes métriques. Leur description est disponible dans la table system.events.
  • Settings (Map(String, String)) — Settings modifiés lors de l’exécution de la requête par le client. Pour activer la journalisation des modifications de paramètres, définissez le paramètre log_query_settings sur 1.
  • used_aggregate_functions (Array(String)) — Noms canoniques des fonctions d’agrégation utilisées lors de l’exécution de la requête.
  • used_aggregate_function_combinators (Array(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(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(String)) — Noms canoniques des familles de types de données utilisées lors de l’exécution de la requête.
  • used_dictionaries (Array(String)) — Noms canoniques des dictionnaires utilisés lors de l’exécution de la requête.
  • used_formats (Array(String)) — Noms canoniques des formats utilisés lors de l’exécution de la requête.
  • used_functions (Array(String)) — Noms canoniques des fonctions utilisées lors de l’exécution de la requête.
  • used_storages (Array(String)) — Noms canoniques des stockages utilisés lors de l’exécution de la requête.
  • used_table_functions (Array(String)) — Noms canoniques des fonctions de table utilisées lors de l’exécution de la requête.
  • used_executable_user_defined_functions (Array(String)) — Noms canoniques des fonctions définies par l’utilisateur exécutables utilisées lors de l’exécution de la requête.
  • used_sql_user_defined_functions (Array(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(String)) — Liste des noms des politiques de lignes utilisées lors de l’exécution de la requête.
  • used_privileges (Array(String)) — Privilèges dont la vérification a réussi lors de l’exécution de la requête.
  • missing_privileges (Array(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 des résultats de requêtes ni lu depuis celui-ci, ‘Write’ = Le résultat de la requête a été écrit dans le cache des résultats de requêtes, ‘Read’ = Le résultat de la requête a été lu depuis le cache des résultats de requêtes.
  • asynchronous_read_counters (Map(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).

Exemple

Dernière modification le 14 août 2026