Descripción
Muestra al usuario actual sus propios registros de consultas. Lee la tabla de registro de consultas configurada mediante los ajustes del servidorquery_log.database y query_log.table (system.query_log de forma predeterminada) y devuelve únicamente las filas cuyo usuario iniciador es igual a currentUser() (el usuario iniciador se toma de initial_user cuando está establecido; de lo contrario, de user).
A diferencia de la propia tabla de registro de consultas, system.user_query_log puede leerse sin ningún permiso, por lo que los usuarios pueden inspeccionar sus propias consultas sin que se les conceda acceso a las consultas de otros.
Esto solo se admite cuando el registro de consultas se almacena localmente. Si query_log.engine está configurado como Distributed o cualquier otro motor que delegue las lecturas en otro servidor, system.user_query_log se niega a leer de ella y genera una excepción, ya que la comprobación de acceso requerida no puede aplicarse a través de un límite entre servidores que usan el protocolo ClickHouse. En ese caso, deshabilite la tabla con query_log.enable_user_query_log = 0.
Disponibilidad
system.user_query_log solo se adjunta cuando el ajuste del servidor query_log.enable_user_query_log está habilitado, que es el valor predeterminado. Cuando el ajuste es 0, la tabla no existe y las consultas contra ella fallan con UNKNOWN_TABLE.
Cuando query_log.enable_user_query_log está habilitado pero el registro de consultas subyacente no está configurado o su tabla aún no se ha creado, system.user_query_log existe pero está vacía.
Las condiciones sobre la partición y las columnas clave del registro de consultas (event_date, event_time, query_start_time, query_id, type y columnas escalares similares) comparadas con constantes se hacen pushdown a la tabla de registro de consultas subyacente, por lo que las búsquedas habituales, como la del ejemplo siguiente, mantienen la poda de particiones y no examinan todo el registro conservado.
Si se creó una tabla llamada system.user_query_log antes de actualizar a una versión de ClickHouse que proporciona esta tabla, el servidor no se iniciará hasta que se cambie el nombre de la tabla existente o se elimine, o se establezca query_log.enable_user_query_log en 0.
Columnas
hostname(String) — Nombre de host del servidor que ejecuta la consulta.clickhouse_version(String) — Versión del servidor ClickHouse que generó la fila.system_processor(String) — Arquitectura de CPU del servidor ClickHouse que generó la fila.type(Enum8(‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4)) — Tipo de evento ocurrido durante la ejecución de la consulta. Valores:QueryStart— inicio correcto de la ejecución de la consulta,QueryFinish— finalización correcta de la ejecución de la consulta,ExceptionBeforeStart— excepción antes del inicio de la ejecución de la consulta,ExceptionWhileProcessing— excepción durante la ejecución de la consulta.event_date(Date) — Fecha de inicio de la consulta.event_time(DateTime) — Hora de inicio de la consulta.event_time_microseconds(DateTime64(6)) — Hora de inicio de la consulta con precisión de microsegundos.query_start_time(DateTime) — Hora de inicio de la ejecución de la consulta.query_start_time_microseconds(DateTime64(6)) — Hora de inicio de la ejecución de la consulta con precisión de microsegundos.query_duration_ms(UInt64) — Duración de la ejecución de la consulta en milisegundos.read_rows(UInt64) — Número total de filas leídas de todas las tablas y funciones de tabla que participan en la consulta. Incluye subconsultas habituales y subconsultas para IN y JOIN. En las consultas distribuidas, read_rows incluye el número total de filas leídas en todas las réplicas. Cada réplica envía su valor de read_rows, y el servidor iniciador de la consulta agrega todos los valores recibidos y locales. Los volúmenes de caché no afectan a este valor.read_bytes(UInt64) — Número total de bytes leídos de todas las tablas y funciones de tabla que participan en la consulta. Incluye subconsultas habituales y subconsultas para IN y JOIN. En las consultas distribuidas, read_bytes incluye el número total de filas leídas en todas las réplicas. Cada réplica envía su valor de read_bytes, y el servidor iniciador de la consulta agrega todos los valores recibidos y locales. Los volúmenes de caché no afectan a este valor.written_rows(UInt64) — Número de filas escritas por la consulta, incluidas las escritas por inserciones posteriores activadas por el pipeline, como las vistas materializadas adjuntas. En una inserción síncrona, estas filas posteriores se registran en la entradaquery_kind=Insert; en una inserción asíncrona, se registran en la entradaquery_kind=AsyncInsertFlush, mientras que la entradaInsertdirigida al cliente registra solo las filas aceptadas del cliente. Para las consultas que no escriben filas, es 0.written_bytes(UInt64) — Número de bytes escritos por la consulta (sin comprimir), incluidos los escritos por inserciones posteriores activadas por el pipeline, como las vistas materializadas adjuntas. En una inserción síncrona, estos bytes posteriores se registran en la entradaquery_kind=Insert; en una inserción asíncrona, se registran en la entradaquery_kind=AsyncInsertFlush, mientras que la entradaInsertdirigida al cliente registra solo los bytes aceptados del cliente. Para las consultas que no escriben datos, es 0.result_rows(UInt64) — Número de filas en el resultado de una consulta SELECT o número de filas escritas por una inserción. En una inserción síncrona, incluye las filas escritas por inserciones posteriores activadas por el pipeline (como las vistas materializadas adjuntas) en la entradaquery_kind=Insert; en una inserción asíncrona, esas filas posteriores se registran en la entradaquery_kind=AsyncInsertFlush, mientras que la entradaInsertdirigida al cliente registra solo las filas aceptadas del cliente.result_bytes(UInt64) — Cantidad de memoria RAM, en bytes, utilizada para almacenar el resultado de una consulta.memory_usage(UInt64) — Consumo de memoria de la consulta.current_database(String) — Nombre de la base de datos actual.query(String) — Cadena de consulta.formatted_query(String) — Cadena de consulta formateada.normalized_query_hash(UInt64) — Valor hash numérico idéntico para consultas que solo difieren en los valores de los literales.query_kind(String) — Tipo de consulta.databases(Array(String)) — Nombres de las bases de datos presentes en la consulta.tables(Array(String)) — Nombres de las tablas presentes en la consulta.columns(Array(String)) — Nombres de las columnas presentes en la consulta.partitions(Array(String)) — Nombres de las particiones presentes en la consulta.projections(Array(String)) — Nombres de las proyecciones utilizadas durante la ejecución de la consulta.views(Array(String)) — Nombres de las vistas (materializadas o en tiempo real) presentes en la consulta.exception_code(Int32) — Código de excepción.exception(String) — Mensaje de excepción.stack_trace(String) — Traza de pila. Cadena vacía si la consulta se completó correctamente.is_initial_query(UInt8) — Indica si la consulta es inicial. Valores posibles: 1 — una consulta inicial (de nivel superior); 0 — una consulta secundaria iniciada por otra consulta, incluidas las consultas para ejecución distribuida y las subconsultas internas.connection_address(IPv6) — Dirección IP del cliente desde la que se estableció la conexión. Si la conexión se realiza mediante un proxy, será la dirección del proxy.connection_port(UInt16) — Puerto del cliente desde el que se estableció la conexión. Si la conexión se realiza mediante un proxy, será el puerto del proxy.user(String) — Nombre del usuario que inició la consulta actual.query_id(String) — ID de la consulta.address(IPv6) — Dirección IP utilizada para realizar la consulta. Si la conexión se realiza mediante un proxy y se estableceauth_use_forwarded_address, será la dirección del cliente en lugar de la del proxy.port(UInt16) — Puerto del cliente utilizado para realizar la consulta. Si la conexión se realiza mediante un proxy y se estableceauth_use_forwarded_address, será el puerto del cliente en lugar del del proxy.initial_user(String) — Nombre del usuario que ejecutó la consulta inicial en la misma cadena de consultas.initial_query_id(String) — ID de la consulta inicial en la misma cadena de consultas.initial_address(IPv6) — Dirección IP desde la que se inició la consulta inicial en la misma cadena de consultas.initial_port(UInt16) — Puerto del cliente desde el que se inició la consulta inicial en la misma cadena de consultas.initial_query_start_time(DateTime) — Hora de inicio de la consulta inicial en la misma cadena de consultas.initial_query_start_time_microseconds(DateTime64(6)) — Hora de inicio de la consulta inicial en la misma cadena de consultas, con precisión de microsegundos.authenticated_user(String) — Nombre del usuario autenticado en la sesión.interface(Enum8(‘Unknown’ = 0, ‘TCP’ = 1, ‘HTTP’ = 2, ‘gRPC’ = 3, ‘MySQL’ = 4, ‘PostgreSQL’ = 5, ‘Local’ = 6, ‘TCP_Interserver’ = 7, ‘Prometheus’ = 8, ‘Background’ = 9, ‘ArrowFlight’ = 10)) — Interfaz desde la que se inició la consulta, según lo informado por el cliente.Unknownsi la interfaz informada no es una que este servidor reconozca.is_secure(UInt8) — Indicador de si una consulta se ejecutó a través de una interfaz seguraos_user(String) — Nombre de usuario del sistema operativo que ejecuta clickhouse-client.client_hostname(String) — Nombre de host de la máquina cliente en la que se ejecuta clickhouse-client u otro cliente TCP.client_name(String) — Nombre de clickhouse-client u otro cliente TCP.client_agent(String) — Agente de programación con IA que invocó al cliente (p. ej.,claude-code,cursor), detectado a partir de variables de entorno. Vacío si no se detectó ningún agente.client_revision(UInt32) — Revisión de clickhouse-client u otro cliente TCP.client_version_major(UInt32) — Versión principal de clickhouse-client u otro cliente TCP.client_version_minor(UInt32) — Versión secundaria de clickhouse-client u otro cliente TCP.client_version_patch(UInt32) — Componente de parche de la versión de clickhouse-client u otro cliente TCP.script_query_number(UInt32) — Número de la consulta en un script con varias consultas para clickhouse-client.script_line_number(UInt32) — Número de línea donde comienza la consulta en un script con varias consultas para clickhouse-client.http_method(Enum8(‘UNKNOWN’ = 0, ‘GET’ = 1, ‘POST’ = 2, ‘OPTIONS’ = 3, ‘PUT’ = 4, ‘DELETE’ = 5, ‘HEAD’ = 6)) — Método HTTP que inició la consulta.UNKNOWNsi la consulta no llegó por HTTP o si el método informado no es uno que este servidor reconozca.http_user_agent(String) — Cabecera HTTP UserAgent incluida en la consulta HTTP.http_referer(String) — Cabecera HTTP Referer incluida en la consulta HTTP (contiene una dirección absoluta o parcial de la página que realiza la consulta).forwarded_for(String) — Cabecera HTTP X-Forwarded-For incluida en la consulta HTTP.quota_key(String) — Clave de cuota especificada en la configuración de cuotas (consulte keyed).distributed_depth(UInt64) — Número de veces que una consulta se redirigió entre servidores.revision(UInt32) — Revisión de ClickHouse.http_handler_name(String) — Nombre del handler HTTP definido mediante SQL (CREATE HANDLER) que invocó la consulta. Vacío si la consulta no se invocó mediante dicho handler.http_request_url(String) — Ruta de la solicitud HTTP (sin la cadena de consulta) que invocó la consulta. La cadena de consulta se omite para que los parámetros confidenciales de la solicitud no persistan. Vacío para consultas que no son HTTP.log_comment(String) — Comentario de registro. Puede establecerse como una cadena arbitraria de longitud no superior a max_query_size. Una cadena vacía si no está definido.thread_ids(Array(UInt64)) — ID de los hilos que participan en la ejecución de la consulta. Es posible que estos hilos no se hayan ejecutado simultáneamente.peak_threads_usage(UInt64) — Número máximo de hilos simultáneos que ejecutan la consulta.ProfileEvents(Map(String, UInt64)) — ProfileEvents que miden distintas métricas. Su descripción se encuentra en la tabla system.events.Settings(Map(String, String)) — Configuraciones que se modificaron cuando el cliente ejecutó la consulta. Para habilitar el registro de cambios en la configuración, establezca el parámetro log_query_settings en 1.used_aggregate_functions(Array(String)) — Nombres canónicos de las funciones de agregación utilizadas durante la ejecución de la consulta.used_aggregate_function_combinators(Array(String)) — Nombres canónicos de los combinadores de funciones de agregación utilizados durante la ejecución de la consulta.used_database_engines(Array(String)) — Nombres canónicos de los motores de base de datos utilizados durante la ejecución de la consulta.used_data_type_families(Array(String)) — Nombres canónicos de las familias de tipos de datos utilizadas durante la ejecución de la consulta.used_dictionaries(Array(String)) — Nombres canónicos de los diccionarios utilizados durante la ejecución de la consulta.used_formats(Array(String)) — Nombres canónicos de los formatos utilizados durante la ejecución de la consulta.used_functions(Array(String)) — Nombres canónicos de las funciones utilizadas durante la ejecución de la consulta.used_storages(Array(String)) — Nombres canónicos de los sistemas de almacenamiento utilizados durante la ejecución de la consulta.used_table_functions(Array(String)) — Nombres canónicos de las funciones de tabla utilizadas durante la ejecución de la consulta.used_executable_user_defined_functions(Array(String)) — Nombres canónicos de las funciones ejecutables definidas por el usuario utilizadas durante la ejecución de la consulta.used_sql_user_defined_functions(Array(String)) — Nombres canónicos de las funciones SQL definidas por el usuario utilizadas durante la ejecución de la consulta.used_row_policies(Array(String)) — Lista de nombres de las políticas de fila utilizadas durante la ejecución de la consulta.used_privileges(Array(String)) — Privilegios comprobados correctamente durante la ejecución de la consulta.missing_privileges(Array(String)) — Privilegios que faltan durante la ejecución de la consulta.used_number_of_joins(UInt64) — Número de joins físicos ejecutados para esta consulta. Se recopila de las canalizaciones a medida que se construyen, por lo que refleja los joins que quedan tras aplicar todas las optimizaciones, no el número de cláusulas JOIN del texto de la consulta. Un join se contabiliza sea cual sea su nivel de anidamiento: las subconsultas, las expresiones de tabla comunes, las vistas, las vistas de vistas y el SELECT de una vista materializada activada por un INSERT se registran en la fila de la consulta enviada, por lo que este valor puede ser distinto de cero en una consulta cuyo propio texto no contiene ningún JOIN. Una consulta que construye una canalización sin ejecutarla, como EXPLAIN PIPELINE, informa de los joins de la consulta que explica. Algunas canalizaciones se ensamblan más de una vez durante la ejecución de una misma consulta: el SELECT de una vista materializada se ensambla para cada bloque del INSERT que la activa y en cada flujo de inserción, el miembro recursivo de un CTE recursivo se ensambla en cada iteración y la relación de un bucle se vuelve a ensamblar cada vez que se reinicia. Aun así, los joins de estas canalizaciones se contabilizan una sola vez, por lo que este número describe la consulta y no cuántas veces se ensamblaron sus canalizaciones.used_join_algorithms(Array(String)) — Algoritmos de los joins contabilizados en used_number_of_joins: ‘HASH’, ‘PARALLEL_HASH’, ‘GRACE_HASH’, ‘PARTIAL_MERGE’, ‘FULL_SORTING_MERGE’, ‘PARALLEL_FULL_SORTING_MERGE’, ‘IE_JOIN’, ‘DIRECT’, ‘PASTE’ y ‘CONSTANT’, ordenados y deduplicados, de modo que un algoritmo compartido por varios joins aparece una sola vez. Se trata del algoritmo elegido para ejecutar cada join, no de los algoritmos que permite la configuración join_algorithm. Un algoritmo puede sustituirse por otro en mitad de la ejecución; en ese caso, se informan ambos.used_join_kinds(Array(String)) — Tipos de los joins contabilizados en used_number_of_joins, con un elemento por join, de modo que un tipo compartido por varios joins aparece varias veces. Los elementos aparecen ordenados, no en orden de ejecución. Cada tipo corresponde al que se ejecutó realmente, que puede diferir del texto de la consulta, ya que el optimizador puede ejecutar un join con los lados intercambiados y convertir así LEFT en RIGHT.used_join_strictness(Array(String)) — Estrictez de los joins contabilizados en used_number_of_joins, con un elemento por join, en el mismo orden que used_join_kinds: el elemento de un índice determinado describe el mismo join en ambos arrays.spilled_to_disk(Array(String)) — Operadores que escribieron datos en archivos temporales en disco (procesamiento en memoria externa) durante la ejecución de la consulta, ordenados y deduplicados. Un array vacío indica que la consulta se ejecutó íntegramente en memoria.transaction_id(Tuple(UInt64, UInt64, UUID, Int64)) — Identificador de la transacción en cuyo ámbito se ejecutó esta consulta.query_cache_usage(Enum8(‘Unknown’ = 0, ‘None’ = 1, ‘Write’ = 2, ‘Read’ = 3)) — Uso de la caché de consultas durante la ejecución de la consulta. Valores: ‘Unknown’ = estado desconocido, ‘None’ = el resultado de la consulta no se escribió ni se leyó de la caché de resultados de consultas, ‘Write’ = el resultado de la consulta se escribió en la caché de resultados de consultas, ‘Read’ = el resultado de la consulta se leyó de la caché de resultados de consultas.asynchronous_read_counters(Map(String, UInt64)) — Métricas de lectura asíncrona.is_internal(UInt8) — Indica si se trata de una consulta auxiliar ejecutada internamente.
ProfileEvents.Names— Alias demapKeys(ProfileEvents).ProfileEvents.Values— Alias demapValues(ProfileEvents).Settings.Names— Alias demapKeys(Settings).Settings.Values— Alias demapValues(Settings).