1. processes(查询操作记录)
name | type | comment |
---|---|---|
is_initial_query | UInt8 | |
user | String | 发起查询的用户 |
query_id | String | 查询 ID |
address | IPv6 | 请求发起的 IP 地址 |
port | UInt16 | 端口号 |
initial_user | String | 运行初始查询的用户名(用于分布式查询执行) |
initial_query_id | String | 初始查询的 ID(用于分布式查询执行) |
initial_address | IPv6 | 启动父查询的 IP 地址 |
initial_port | UInt16 | 用于进行父查询的客户端端口 |
interface | UInt8 | 发起查询的接口。可能的值: 1 — TCP。 2 - HTTP。 |
os_user | String | 运行 clickhouse-client 的操作系统用户名。 |
client_hostname | String | 运行 clickhouse-client 或其他 TCP 客户端的客户端机器的主机名。 |
client_name | String | clickhouse-client 或其他 TCP 客户端名称。 |
client_revision | UInt64 | clickhouse-client 或另一个 TCP 客户端的修订版 |
client_version_major | UInt64 | clickhouse-client 或其他 TCP 客户端的主要版本 |
client_version_minor | UInt64 | clickhouse-client 或其他 TCP 客户端的次要版本 |
client_version_patch | UInt64 | clickhouse-client 或其他 TCP 客户端版本的补丁组件 |
http_method | UInt8 | 发起查询的 HTTP 方法 0 — 查询是从 TCP 接口启动的。 1 — 使用了 GET 方法。 2 — 使用了 POST 方法。 |
http_user_agent | String | 在 HTTP 查询中传递的 HTTP 标头 UserAgent |
http_referer | String | 在 HTTP 查询中传递的 HTTP 标头 Referer(包含进行查询的页面的绝对或部分地址) |
forwarded_for | String | 在 HTTP 查询中传递的 HTTP 标头 X-Forwarded-For |
quota_key | String | 在配额设置中指定的配额键 |
elapsed | Float64 | 请求执行开始后的时间,秒 |
is_cancelled | UInt8 | |
read_rows | UInt64 | 从表中读取的行数 |
read_bytes | UInt64 | 从表中读取的未压缩字节数 |
total_rows_approx | UInt64 | 应该读取的总行数的近似值 |
written_rows | UInt64 | 写入行数 |
written_bytes | UInt64 | 写入字节数 |
memory_usage | Int64 | 消耗内存数量 |
peak_memory_usage | Int64 | 此线程上下文中已分配和已释放内存量之间的最大差异 |
query | String | 查询文本,如果是 insert ,不包含数据 |
thread_ids | Array(UInt64) | 线程 ID 数组 |
ProfileEvents.Names | Array(String) | 衡量该线程不同指标的计数器。它们的描述可以在表 system.events 中找到 |
ProfileEvents.Values | Array(UInt64) | ProfileEvents.Names 列中列出的此线程的指标值 |
Settings.Names | Array(String) | 设置名称 |
Settings.Values | Array(String) | 设置值 |
current_database | String | 当前数据库的名称 |
2. query_log(执行信息)
包含已执行查询的信息,例如开始时间、处理持续时间、错误消息。不包含 INSERT 语句,可以在config.xml里设置query_log,可以通过setting log_queries = 0关闭,不会自动删除记录,可以设置ttl属性的表。通过SYSTEM FLUSH LOGS可以强制刷写。每个查询在 query_log 表中创建1~2行,具体取决于查询的状态:
- 查询执行成功,则会创建 QueryStart 和 QueryFinish 类型的事件。
- 查询期间发生错误,则会创建QueryStart 和 ExceptionWhileProcessing 类型的事件。
- 查询之前发生错误,则会创建一个具有 ExceptionBeforeStart 类型的事件。
name | type | comment |
---|---|---|
type | Enum8( ‘QueryStart’ = 1, ‘QueryFinish’ = 2, ‘ExceptionBeforeStart’ = 3, ‘ExceptionWhileProcessing’ = 4 ) |
执行查询时发生的事件类型 1 成功开始查询执行。 2 查询执行成功结束。 3 查询执行开始前的异常。 4 查询执行期间的异常。 |
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 | 读取行数 |
read_bytes | UInt64 | 读取字节数 |
written_rows | UInt64 | 写入的行数 对于查询列值为0 |
written_bytes | UInt64 | 写入的字节数 对于查询列值为0 |
result_rows | UInt64 | SELECT 查询结果中的行数,或 INSERT 查询中的行数 |
result_bytes | UInt64 | 用于存储查询结果的 RAM 容量(以字节为单位) |
memory_usage | UInt64 | 在此线程上下文中分配和释放的内存数量之间的差异 |
current_database | String | 当前数据库的名称 |
query | String | 查询语句 |
normalized_query_hash | UInt64 | 哈希值 |
query_kind | LowCardinality(String) | 查询类型 |
databases | Array(LowCardinality(String)) | 查询中存在的数据库的名称 |
tables | Array(LowCardinality(String)) | 查询中存在的数据表的名称 |
columns | Array(LowCardinality(String)) | 查询中存在的列的名称 |
exception_code | Int32 | 异常代码 |
exception | String | 异常信息 |
stack_trace | String | 堆栈跟踪。如果查询成功完成,则为空字符串 |
is_initial_query | UInt8 | 查询类型 1 查询由客户端发起。 0 作为分布式查询执行的一部分,查询由另一个查询启动。 |
user | String | 发起当前查询的用户名 |
query_id | String | 查询 ID |
address | IPv6 | 用于进行查询的 IP 地址 |
port | UInt16 | 用于进行查询的客户端端口 |
initial_user | String | 运行初始查询的用户名(用于分布式查询执行) |
initial_query_id | String | 初始查询的 ID(用于分布式查询执行) |
initial_address | IPv6 | 启动父查询的 IP 地址 |
initial_port | UInt16 | 用于进行父查询的客户端端口 |
interface | UInt8 | 发起查询的接口。 1 TCP 2 HTTP |
os_user | String | 运行 clickhouse-client 的操作系统用户名 |
client_hostname | String | 运行 clickhouse-client 或其他 TCP 客户端的客户端机器的主机名 |
client_name | 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 客户端版本的补丁组件 |
http_method | UInt8 | 发起查询的 HTTP 方法 0 查询是从 TCP 接口启动的 1 使用了 GET 方法 2 使用了 POST 方法 |
http_user_agent | String | 在 HTTP 查询中传递的 HTTP 标头 UserAgent |
http_referer | String | 在 HTTP 查询中传递的 HTTP 标头 Referer(包含进行查询的页面的绝对或部分地址) |
forwarded_for | String | 在 HTTP 查询中传递的 HTTP 标头 X-Forwarded-For |
quota_key | String | 在配额设置中指定的配额键 |
revision | UInt32 | ClickHouse 修订版 |
log_comment | String | 记录备注。 它可以设置为不超过 max_query_size 的任意字符串如果未定义,则为空字符串 |
thread_ids | Array(UInt64) | 参与查询执行的线程 ID |
ProfileEvents.Names | Array(String) | 衡量不同指标的计数器。它们的描述可以在表 system.events 中找到 |
ProfileEvents.Values | Array(UInt64) | ProfileEvents.Names 列中列出的指标值 |
Settings.Names | Array(String) | 客户端运行查询时更改的设置名称。要启用对设置的日志更改,请将 log_query_settings 参数设置为 1 |
Settings.Values | Array(String) | Settings.Names 列中列出的设置值 |
used_aggregate_functions | Array(String) | 在查询执行期间使用的聚合函数的规范名称 |
used_aggregate_function_combinators | Array(String) | 在查询执行期间使用的聚合函数组合器的规范名称 |
used_database_engines | Array(String) | 在查询执行期间使用的数据库引擎的规范名称 |
used_data_type_families | Array(String) | 在查询执行期间使用的数据类型系列的规范名称 |
used_dictionaries | Array(String) | 字典的规范名称,在查询执行期间使用 |
used_formats | Array(String) | 格式的规范名称,在查询执行期间使用 |
used_functions | Array(String) | 在查询执行期间使用的函数的规范名称 |
used_storages | Array(String) | 存储的规范名称,在查询执行期间使用 |
used_table_functions | Array(String) | 在查询执行期间使用的表函数的规范名称 |
3. query_thread_log (执行线程信息)
包含有关执行查询的线程的信息,例如线程名称、线程开始时间、查询处理的持续时间。开启该日志需要:
- 配置log_query_threads参数
- 设置log_query_threads=1
刷新周期通过flush_interval_milliseconds 参数设置,使用 SYSTEM FLUSH LOGS 要强制刷新。
name | type | comment |
---|---|---|
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 | 读取行数 |
read_bytes | UInt64 | 读取字节数 |
written_rows | UInt64 | 写入行数,查询时为 0 |
written_bytes | UInt64 | 写入字节数,查询时为 0 |
memory_usage | Int64 | 在此线程上下文中分配和释放的内存数量之间的差异 |
peak_memory_usage | Int64 | 在此线程上下文中分配和释放的内存数量之间的最大差异。 |
thread_name | String | 线程名称 |
thread_id | UInt64 | 线程ID |
master_thread_id | UInt64 | 初始线程的初始ID |
current_database | String | 初始线程的操作系统初始 ID |
query | String | 查询语句 |
normalized_query_hash | UInt64 | 标准化查询哈希 |
is_initial_query | UInt8 | 查询类型。可能的取值: 1 查询由客户端发起。 0 查询由另一个查询发起,用于分布式查询执行。 |
user | String | 发起查询的用户 |
query_id | String | 查询ID |
address | IPv6 | 发起查询的 IP |
port | UInt16 | 查询查询的客户端端口 |
initial_user | String | 初始查询的用户名 |
initial_query_id | String | 初始查询的 ID |
initial_address | IPv6 | 启动父查询的 IP |
initial_port | UInt16 | 启动父查询的客户端端口 |
interface | UInt8 | 发起查询的接口,1 TCP,2 HTTP |
os_user | String | 擦做系统用户 |
client_hostname | String | 运行客户端的主机名 |
client_name | 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 客户端版本的补丁组件 |
http_method | UInt8 | 发起查询的 HTTP 方法: 0 查询从 TCP 启动 1 使用 GET 方法 2 使用 POST 方法 |
http_user_agent | String | 在使用 HTTP 请求中传递的 UserAgent请求头 |
http_referer | String | HTTP 请求中传递的 UserAgent 标头 |
forwarded_for | String | 在 HTTP 查询中传递的 HTTP 标头 X-Forwarded-For |
quota_key | String | 配额设置中指定的配额键 |
revision | UInt32 | clickhouse 修订版本 |
ProfileEvents.Names | Array(String) | 测量不同指标的机器数 |
ProfileEvents.Values | Array(UInt64) | 在 ProfileEvents.Names 中列出的指标值 |
4. mutations(mutation 操作记录表)
该表记录有关MergeTree表的变化及其处理信息。每个变化命令都用一行表示
name | type | comment |
---|---|---|
database | String | 数据库名 |
table | String | 数据表名 |
mutation_id | String | 操作 ID 对于副本集的表, 这些id对应于ZooKeeper中的 目录中的znode名称。 对于没有副本的表,id对应于表的数据目录中的文件名。 |
command | String | 命令字符串 (ALTER TABLE [db.] TABLE后的查询部分) |
create_time | DateTime | 当提交执行此变化命令的时间 |
block_numbers.partition_id | Array(String) | 对于复制表,数组包含分区的 ID(每个分区一个记录)。对于非复制表,数组为空。 |
block_numbers.number | Array(Int64) | 对于复制表,数组包含每个分区的一条记录,以及获得的块号。只有包含数字小于此数字的块的部分才会在分区中发生变更。在非复制表中所有分区中的块号形成一个序列,该列将包含一条记录,该记录具有通过mutation获得的单个块号。 |
parts_to_do_names | Array(String) | 数据部分的名称数组 |
parts_to_do | Int64 | 需要为完成变化而进行突变的数据变化的数量 |
is_done | UInt8 | 是否完成, 即使parts_to_do = 0,由于长时间运行的插入操作将创建需要进行修改的新的新数据片段,复制表的修改仍然有可能没有完成 |
latest_failed_part | String | 最近不能修改的数据片段的名称 |
latest_fail_time | DateTime | 最新数据片段修改失败的时间 |
latest_fail_reason | String | 导致最近的数据片段修改失败的异常消息 |
5. distributed_ddl_queue(分布式 DDL 队列)
包含有关在集群上执行的分布式 ddl 查询(ON CLUSTER 子句)的信息
name | type | comment |
---|---|---|
entry | String | 查询ID |
host_name | String | 主机名 |
host_address | String | IP |
port | UInt16 | 端口 |
status | Enum8( ‘Active’ = 0, ‘Finished’ = 1, ‘Unknown’ = 2, ‘Errored’ = 3 ) |
查询状态 |
cluster | String | 集群名称 |
query | String | 执行的语句 |
initiator | String | 执行查询的节点 |
query_start_time | DateTime | 查询开始时间 |
query_finish_time | DateTime | 查询结束时间 |
query_duration_ms | UInt64 | 执行时间,毫秒 |
exception_code | Enum8( ‘ZSESSIONMOVED’ = -118, ‘ZNOTHING’ = -117, ‘ZCLOSING’ = -116, ‘ZAUTHFAILED’ = -115, ‘ZINVALIDACL’ = -114, ‘ZINVALIDCALLBACK’ = -113, ‘ZSESSIONEXPIRED’ = -112, ‘ZNOTEMPTY’ = -111, ‘ZNODEEXISTS’ = -110, ‘ZNOCHILDRENFOREPHEMERALS’ = -108, ‘ZBADVERSION’ = -103, ‘ZNOAUTH’ = -102, ‘ZNONODE’ = -101, ‘ZAPIERROR’ = -100, ‘ZINVALIDSTATE’ = -9, ‘ZBADARGUMENTS’ = -8, ‘ZOPERATIONTIMEOUT’ = -7, ‘ZUNIMPLEMENTED’ = -6, ‘ZMARSHALLINGERROR’ = -5, ‘ZCONNECTIONLOSS’ = -4, ‘ZDATAINCONSISTENCY’ = -3, ‘ZRUNTIMEINCONSISTENCY’ = -2, ‘ZSYSTEMERROR’ = -1, ‘ZOK’ = 0 ) |
ZooKeeper 的异常代码 |
6. distribution_queue(分发队列中的信息)
包含要发送到分片的队列中的本地文件的信息。这些本地文件通过以异步模式将新数据插入分布式表而创建的新部分。
name | type | comment |
---|---|---|
database | String | 库名 |
table | String | 表名 |
data_path | String | 包含本地文件的文件夹的路径 |
is_blocked | UInt8 | 标志指示是否阻止向服务器发送本地文件 |
error_count | UInt64 | 错误数 |
data_files | UInt64 | 文件夹中的本地文件数 |
data_compressed_bytes | UInt64 | 本地文件中压缩数据的大小,以字节为单位 |
last_exception | String | 关于发生的最后一个错误(如果有)的文本消息 |
7. replication_queue(复制表任务队列)
包含有关存储在 ZooKeeper 中的复制队列任务的信息,用于 ReplicatedMergeTree 系列中的表。
name | type | comment |
---|---|---|
database | String | 数据库的名称 |
table | String | 数据表的名称 |
replica_name | String | ZooKeeper 中的副本名称。同一张表的不同副本有不同的名称。 |
position | UInt32 | 任务在队列中的位置。 |
node_name | String | ZooKeeper 中的节点名称 |
type | String | 队列中任务的类型,以下之一: GET_PART — 从另一个副本中获取零件。 ATTACH_PART — 附加分区,可能来自我们自己的副本(如果在分离的文件夹中找到)。 MERGE_PARTS — 合并分区。 DROP_RANGE — 删除指定分区中指定编号范围内的部分。 CLEAR_COLUMN — 已弃用。从指定分区删除特定列。 CLEAR_INDEX — 已弃用。从指定分区删除特定索引。 REPLACE_RANGE — 删除一定范围的分区并用新分区替换。 MUTATE_PART — 对分区应用一个或多个mutation。 ALTER_METADATA — 根据全局 /metadata 和 /columns 路径应用更改修改。 |
create_time | DateTime | 提交任务执行的日期和时间 |
required_quorum | UInt32 | 等待任务完成并确认完成的副本数。此列仅与 GET_PARTS 任务相关 |
source_replica | String | 源副本的名称 |
new_part_name | String | 新部件的名称 |
parts_to_merge | Array(String) | 要合并或更新的分区的名称 |
is_detach | UInt8 | 该标志指示 DETACH_PARTS 任务是否在队列中 |
is_currently_executing | UInt8 | 该标志指示当前是否正在执行特定任务 |
num_tries | UInt32 | 完成任务的失败尝试次数 |
last_exception | String | 关于发生的最后一个错误(如果有)的文本消息 |
last_attempt_time | DateTime | 上次尝试任务的日期和时间 |
num_postponed | UInt32 | 推迟任务的数量 |
postpone_reason | String | 任务被推迟的原因 |
last_postpone_time | DateTime | 上次推迟任务的日期和时间 |
merge_type | String | 当前合并的类型。如果是mutation则为空 |