跳转到主内容
跳转到主内容

system.query_log

在 ClickHouse Cloud 中进行查询

该系统表中的数据保存在 ClickHouse Cloud 中每个节点的本地。因此,如需获得所有数据的完整视图,需要使用 clusterAllReplicas 函数。更多详情请参阅此处

描述

存储已执行查询的元数据和统计信息,例如开始时间、持续时间、错误消息、资源使用情况以及其他执行细节。它不会存储查询结果。

可以在服务器配置的 query_log 部分更改查询日志记录相关设置。

可以通过设置 log_queries = 0 来禁用查询日志记录。不建议关闭日志记录,因为此表中的信息对于排查问题非常重要。

数据刷新周期由服务器设置中 query_log 部分的 flush_interval_milliseconds 参数控制。要强制刷新,请使用 SYSTEM FLUSH LOGS 查询。

ClickHouse 不会自动从该表中删除数据。更多详情参见简介

system.query_log 表会记录两类查询:

  1. 由客户端直接运行的初始查询。
  2. 由其他查询发起的子查询 (用于分布式查询执行) 。对于此类查询,有关父查询的信息会显示在 initial_* 列中。

每个查询会在 query_log 表中创建一行或两行记录,具体取决于查询的状态 (参见 type 列) :

  1. 如果查询执行成功,则会创建两条类型为 QueryStartQueryFinish 的记录。
  2. 如果在查询处理期间发生错误,则会创建两条类型为 QueryStartExceptionWhileProcessing 的记录。
  3. 如果在启动查询之前发生错误,则会创建一条类型为 ExceptionBeforeStart 的记录。

可以使用 log_queries_probability 设置来减少记录到 query_log 表中的查询数量。

可以使用 log_formatted_queries 设置将格式化后的查询记录到 formatted_query 列中。

  • hostname (LowCardinality(String)) — 执行该查询的服务器主机名。
  • type (Enum8('QueryStart' = 1, 'QueryFinish' = 2, 'ExceptionBeforeStart' = 3, 'ExceptionWhileProcessing' = 4)) — 执行查询时发生的事件类型。取值:QueryStart — 查询开始执行且成功,QueryFinish — 查询执行成功结束,ExceptionBeforeStart — 查询开始执行前发生异常,ExceptionWhileProcessing — 查询执行过程中发生异常。
  • event_date (Date) — 查询起始日期。
  • event_time (DateTime) — 查询的开始时间。
  • event_time_microseconds (DateTime64(6)) — 查询的开始时间,精确到微秒。
  • query_start_time (DateTime) — 查询开始执行的时间。
  • query_start_time_microseconds (DateTime64(6)) — 查询开始执行的时间,精确到微秒。
  • query_duration_ms (UInt64) — 查询执行的耗时 (以毫秒为单位) 。
  • read_rows (UInt64) — 从参与该查询的所有表和表函数中读取的总行数。它包括常规子查询,以及用于 IN 和 JOIN 的子查询。对于分布式查询,read_rows 包括在所有副本上读取的总行数。每个副本都会发送其 read_rows 值,而查询的发起节点会汇总所有接收到的值以及本地值。缓存容量不会影响该值。
  • read_bytes (UInt64) — 从参与查询的所有表和表函数中读取的总字节数。它包括常规子查询,以及用于 IN 和 JOIN 的子查询。对于分布式查询,read_bytes 包括在所有副本上读取的总行数。每个副本都会发送其 read_bytes 值,而查询的发起节点服务器会汇总所有接收到的值和本地值。缓存容量不会影响该值。
  • written_rows (UInt64) — 对于 INSERT 查询,表示写入的行数;对于其他查询,该列的值为 0。
  • written_bytes (UInt64) — 对于 INSERT 查询,表示写入的字节数 (未压缩) 。对于其他查询,该列的值为 0。
  • result_rows (UInt64) — SELECT 查询结果的行数,或 INSERT 查询的行数。
  • result_bytes (UInt64) — 用于存储查询结果的 RAM 大小 (以字节为单位) 。
  • memory_usage (UInt64) — 查询的内存使用量。
  • current_database (LowCardinality(String)) — 当前数据库名称。
  • query (String) — 查询语句。
  • formatted_query (String) — 格式化后的查询字符串。
  • normalized_query_hash (UInt64) — 一个数值型哈希值;对于仅字面量值不同的查询,该值相同。
  • query_kind (LowCardinality(String)) — 查询类型。
  • databases (Array(LowCardinality(String))) — 查询中涉及的数据库名称。
  • tables (Array(LowCardinality(String))) — 查询中涉及的表名称。
  • columns (Array(LowCardinality(String))) — 查询中包含的列名。
  • partitions (Array(LowCardinality(String))) — 查询中包含的分区名称。
  • projections (Array(LowCardinality(String))) — 查询执行期间使用到的投影名称。
  • views (Array(LowCardinality(String))) — 查询中包含的 (物化视图或实时视图) 名称。
  • exception_code (Int32) — 异常代码。
  • exception (String) — 异常信息。
  • stack_trace (String) — 堆栈跟踪。若查询成功完成,则为空字符串。
  • is_initial_query (UInt8) — 查询类型。可能的值:1 — 查询由客户端发起,0 — 查询由另一条查询在执行分布式查询时发起。
  • connection_address (IPv6) — 建立连接的客户端 IP 地址。若通过代理连接,则该地址为代理的地址。
  • connection_port (UInt16) — 建立该连接时所使用的客户端端口。通过代理连接时,该端口为代理端口。
  • user (LowCardinality(String)) — 发起当前查询的用户名。
  • query_id (String) — 查询 ID。
  • address (IPv6) — 用于发起查询的 IP 地址。若通过代理连接且设置了 auth_use_forwarded_address,则这里显示的是客户端地址,而不是代理地址。
  • port (UInt16) — 用于发起查询的客户端端口。若通过代理连接且设置了 auth_use_forwarded_address,这里显示的将是客户端端口,而非代理端口。
  • initial_user (LowCardinality(String)) — 执行初始查询的用户名 (用于分布式查询执行) 。
  • initial_query_id (String) — 初始查询的 ID (用于执行分布式查询) 。
  • initial_address (IPv6) — 发起父查询时使用的源 IP 地址。
  • initial_port (UInt16) — 用于发起上级查询的客户端端口。
  • initial_query_start_time (DateTime) — 初始查询的开始时间 (用于分布式查询执行) 。
  • initial_query_start_time_microseconds (DateTime64(6)) — 查询初始开始时间,精确到微秒 (用于分布式查询执行) 。
  • authenticated_user (LowCardinality(String)) — 在该会话中通过身份验证的用户名。
  • interface (UInt8) — 该查询发起时使用的接口。可能值:1 — TCP,2 — HTTP。
  • is_secure (UInt8) — 表示查询是否通过安全接口执行的标志
  • os_user (LowCardinality(String)) — 运行 clickhouse-client 的 OS 用户名。
  • client_hostname (LowCardinality(String)) — 运行 clickhouse-client 或其他 TCP 客户端的机器主机名。
  • client_name (LowCardinality(String)) — clickhouse-client 或其他 TCP 客户端的名称。
  • client_revision (UInt32) — clickhouse-client 或其他 TCP 客户端的修订号。
  • client_version_major (UInt32) — clickhouse-client 或其他 TCP 客户端的主版本。
  • client_version_minor (UInt32) — clickhouse-client 或其他 TCP 客户端的小版本号。
  • client_version_patch (UInt32) — clickhouse-client 或其他 TCP 客户端版本的补丁版本号部分。
  • script_query_number (UInt32) — 在供 clickhouse-client 使用的包含多个查询的脚本中的查询编号。
  • script_line_number (UInt32) — 在包含多个查询的 clickhouse-client 脚本中,查询起始的行号。
  • http_method (UInt8) — 发起该查询的 HTTP 方法。可能值:0 — 查询通过 TCP 接口发起,1 — 使用了 GET 方法,2 — 使用了 POST 方法。
  • http_user_agent (LowCardinality(String)) — 在 HTTP 查询中传递的 UserAgent HTTP 请求头。
  • http_referer (String) — 在 HTTP 查询中传递的 Referer HTTP 请求头 (包含发起该查询的页面的完整或部分地址) 。
  • forwarded_for (String) — 在 HTTP 查询中传递的 X-Forwarded-For HTTP 请求头。
  • quota_key (String) — 在 quotas 配置中指定的配额键 (参见 keyed) 。
  • distributed_depth (UInt64) — 查询在服务器之间转发的次数。
  • revision (UInt32) — ClickHouse 修订号。
  • log_comment (String) — 日志注释。可设置为长度不超过 max_query_size 的任意字符串。若未定义,则为空字符串。
  • thread_ids (Array(UInt64)) — 参与执行查询的线程 ID。这些线程不一定同时运行过。
  • peak_threads_usage (UInt64) — 同时执行该查询的线程最大数量。
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — 用于记录不同指标的 ProfileEvents。其说明可在 system.events 表中找到
  • Settings (Map(LowCardinality(String), LowCardinality(String))) — 客户端执行查询时被修改的设置。要启用对设置变更的日志记录,请将 log_query_settings 参数设为 1。
  • used_aggregate_functions (Array(LowCardinality(String))) — 查询执行期间使用的聚合函数的规范名称。
  • used_aggregate_function_combinators (Array(LowCardinality(String))) — 查询执行期间使用的聚合函数组合器的规范名称。
  • used_database_engines (Array(LowCardinality(String))) — 查询执行期间使用的数据库引擎的标准名称。
  • used_data_type_families (Array(LowCardinality(String))) — 查询执行过程中使用的数据类型族的规范名称。
  • used_dictionaries (Array(LowCardinality(String))) — 查询执行期间使用的字典的规范名称。
  • used_formats (Array(LowCardinality(String))) — 查询执行过程中使用的格式的规范名称。
  • used_functions (Array(LowCardinality(String))) — 查询执行期间所使用函数的规范名称。
  • used_storages (Array(LowCardinality(String))) — 查询执行期间使用的存储的规范名称。
  • used_table_functions (Array(LowCardinality(String))) — 查询执行期间所使用表函数的规范名称。
  • used_executable_user_defined_functions (Array(LowCardinality(String))) — 查询执行期间使用过的可执行用户定义函数的规范名称。
  • used_sql_user_defined_functions (Array(LowCardinality(String))) — 查询执行过程中使用的 SQL 用户定义函数的规范名称。
  • used_row_policies (Array(LowCardinality(String))) — 查询执行期间使用的行策略名称列表。
  • used_privileges (Array(LowCardinality(String))) — 在查询执行期间成功校验的特权。
  • missing_privileges (Array(LowCardinality(String))) — 查询执行期间缺少的特权。
  • transaction_id (Tuple(UInt64, UInt64, UUID)) — 执行此查询时所属事务的标识符。
  • query_cache_usage (Enum8('Unknown' = 0, 'None' = 1, 'Write' = 2, 'Read' = 3)) — 查询执行过程中查询缓存的使用情况。值:'Unknown' = 状态未知,'None' = 查询结果既未写入查询结果缓存,也未从查询结果缓存中读取,'Write' = 查询结果已写入查询结果缓存,'Read' = 查询结果已从查询结果缓存中读取。
  • asynchronous_read_counters (Map(LowCardinality(String), UInt64)) — 异步读取指标。
  • is_internal (UInt8) — 表示该查询是否为内部执行的辅助查询。

别名:

  • ProfileEvents.NamesmapKeys(ProfileEvents) 的别名。
  • ProfileEvents.ValuesmapValues(ProfileEvents) 的别名。
  • Settings.NamesmapKeys(Settings) 的别名。
  • Settings.ValuesmapValues(Settings) 的别名。

示例

基本示例

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

Cloud 示例

在 ClickHouse Cloud 中,system.query_log 是每个节点上的本地表;要查看所有记录,需要通过 clusterAllReplicas 进行查询。

例如,要汇总 “default” 集群中每个副本的 query_log 行,可以编写如下查询:

SELECT * 
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

另请参阅