clickhouseclickhouse的系统表
Posted 九师兄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了clickhouseclickhouse的系统表相关的知识,希望对你有一定的参考价值。
1.概述
在日常使用clickhouse中经常会遇到很多问题,有时候需要去查系统表,但是对于我们来说,大部分的系统表的字段名称都不知道,看到了也不知道啥意思,下面我就整理一下clickhouse系统表的字段注释。
2.系统表
系统表用于实现系统的部分功能,并提供对有关系统如何工作的信息的访问。
不能删除系统表(但可以执行DETACH)。
系统表在磁盘上没有数据或元数据的文件。服务器在启动时创建所有系统表。
系统表是只读的
。
它们位于 ‘system’ 数据库中。
2.1 system.asynchronous_metrics
记录定期在后台计算的指标。例如,正在使用的RAM数量。
列:
metric (String) — 指标名称
value (Float64) — 指标值
2.2 system.clusters
记录有关配置文件中可用的集群及其中的服务器的信息。
列:
cluster (String) — 集群名称。
shard_num (UInt32) — 集群分片数,从1开始。
shard_weight (UInt32) — 写入数据时分片的相对权重。
replica_num (UInt32) — 分片的副本编号,从1开始。
host_name (String) — 主机名,也可以在配置中指定。
host_address (String) — 从DNS获得的主机IP地址。
port (UInt16) — 用于连接到服务器的端口。
user (String) — 用于连接到服务器的用户。
errors_count (UInt32) — 此主机无法到达副本的次数。
estimated_recovery_time (UInt32) — 副本错误计数归零剩下的秒数,它被认为是恢复正常。
errors_count 每个查询集群更新一次,但 estimated_recovery_time 按需重新计算。 所以有可能有这样的情况:非零 errors_count 和零 estimated_recovery_time,如果它没有错误,下一个查询 errors_count将为零 并尝试使用副本。
2.3 system.columns
记录有关所有表的列的信息。
列:
database (String) — 数据库名称。
table (String) — 表名。
name (String) — 列名。
type (String) — 列类型。
default_kind (String) — 表达式类型 (DEFAULT, MATERIALIZED, ALIAS),如果没有定义,则为空字符串。
default_expression (String) — 表达式, 如果没有定义,则为空字符串。
data_compressed_bytes (UInt64) — 压缩数据的大小,以字节为单位。
data_uncompressed_bytes (UInt64) — 解压数据的大小,以字节为单位。
marks_bytes (UInt64) — 标记的大小,以字节为单位。
comment (String) — 列的注释,如果没有定义,则为空字符串。
is_in_partition_key (UInt8) — 标志,表明列是否在分区表达式中。
is_in_sorting_key (UInt8) — 标志,表明列是否在排序键表达式中。
is_in_primary_key (UInt8) — 标志,表明列是否在主键表达式中。
is_in_sampling_key (UInt8) — 标志,表明列是否在抽样表达式中。
2.4 system.databases
这个表包含一个名为“name”的字符串列——数据库的名称。 每个服务器知道的数据库在表中都会相应的进入表中。 这个系统表用于实现 SHOW DATABASES 查询。
2.5 system.detached_parts
记录关于 MergeTree 表的已卸载分区的信息。reason 列指定了分区卸载的原因。对于用户卸载的分区,原因是空的。可以用 ALTER TABLE ATTACH PARTITION|PART 命令加载这些分区。有关其他列的描述,参考system.parts。如果分区名称无效,某些列的值可能为NULL。可以使用ALTER TABLE DROP DETACHED PART来删除这些分区。
2.6 system.dictionaries
外部字典信息。
列:
database (String) — 包含由DDL查询创建的字典的数据库的名称。其他字典为空字符串。
name (String) — 字典名称。
status (Enum8) — 字典状态。可能的值:
NOT_LOADED — Dictionary未加载,由于没有被使用。
LOADED — 字典加载成功。
FAILED — 由于错误,无法加载字典。
LOADING — 字典正在加载中。
LOADED_AND_RELOADING — 字典加载成功,现在正在重新加载(常见原因:系统重新加载字典查询、超时、字典配置发送变化)。
FAILED_AND_RELOADING — 由于错误无法加载字典,现在正在加载。
origin (String) — 描述字典的配置文件的路径。
type (String) — 字典类型。Flat, Hashed, Cache,将字典存储在内存中。
key — Key 类型: 数值Key (UInt64) 或者 复合 key (String) — 取自 “(type 1, type 2, …, type n)”。
attribute.names (Array(String)) — 由字典提供的属性名数组。
attribute.types (Array(String)) — 由字典提供的对应属性类型数组。
bytes_allocated (UInt64) — 分配给字典的内存数量。
query_count (UInt64) — 自词典加载或上次成功重新启动以来的查询次数。
hit_rate (Float64) — 对于缓存字典,值在缓存中使用的百分比。
element_count (UInt64) — 字典表中数据记录数
load_factor (Float64) — 在字典中填充的百分比(对于散列字典,是在散列表中填充的百分比)。
source (String) — 字典数据源的文本描述。
lifetime_min (UInt64) — 字典在内存中的最小生存期,在此之后,ClickHouse尝试重新加载字典(如果设置了invalidate_query,则仅当它发生变化变)。在几秒钟内设置。
lifetime_max (UInt64) — 字典在内存中的最小生存期,在此之后,ClickHouse尝试重新加载字典(如果设置了invalidate_query,则仅当它发生变化变)。在几秒钟内设置。
loading_start_time (DateTime) — 开始加载字典的时间。
last_successful_update_time (DateTime) — 加载或更新字典的时间结束。帮助监控一些外部来源的问题和调查原因。
loading_duration (Float32) — 字典加载的持续时间。
last_exception (String) — 如果无法创建字典,当创建或重新加载字典时发生错误的文本。
2. 7 system.events
记录关于系统中发生的事件数量的信息。例如,在表中,您可以找到自ClickHouse服务器启动以来处理了多少SELECT查询。
列:
event (String) — 事件名称
value (UInt64) — 事件发生的次数
description (String) — 时间描述
2.8 system.functions
记录普通函数和聚合函数信息。
列:
name(String) – 函数名
is_aggregate(UInt8) — 是否是聚合函数
2.9 system.graphite_retentions
记录有关参数graphite_rollup的信息,这些参数在带有*GraphiteMergeTree引擎的表中使用。
列:
config_name (String) - graphite_rollup参数名。
regexp (String) - 指标名称的正则表达式。
function (String) - 聚合函数名称。
age (UInt64) - 数据的最小年龄(以秒为单位)。
precision (UInt64) - 如何精确定义数据的年龄(以秒为单位)。
priority (UInt16) - 优先级模式。
is_default (UInt8) - 模式是否为默认模式。
Tables.database (Array(String)) - 使用config_name参数的表的数据库名数组。
Tables.table (Array(String)) - 使用config_name参数的表名数组。
2.10 system.merges
记录有关目前正在处理MergeTree族表的合并和分区变化的信息。
列:
database (String) — 表所在的数据库名称。
table (String) — 表名。
elapsed (Float64) — 从Merge启动后花费的时间(单位秒)
progress (Float64) — 完成工作的百分比,从0到1。
num_parts (UInt64) — 要合并的块的数量。
result_part_name (String) — 合并结果文件名称。
is_mutation (UInt8) - 如果这个过程是分区变化。则是1
total_size_bytes_compressed (UInt64) — 合并块中压缩数据的总大小。
total_size_marks (UInt64) — 合并区分中的标记总数。
bytes_read_uncompressed (UInt64) — 读取的未压缩字节数。
rows_read (UInt64) — 读取的行数。
bytes_written_uncompressed (UInt64) — 写入的未压缩字节数。
rows_written (UInt64) — 写入的行数。
2.11 system.metrics
记录可以立即计算或具有当前值的指标。例如,同时处理的查询数或当前副本延迟。这张表总是最新的。
列:
metric (String) — 指标名称。
value (Int64) — 指标值。
description (String) — 指标描述。
2.12 system.metric_log
记录system.metrics和system.events表中的历史指标值,定期刷新到磁盘。创建/etc/clickhouse-server/config.d/metric_log.xml,写入以下内容开启在system.metric_log采集历史指标。
2.13 system.parts
MergeTree表的片段信息。
列:
partition (String) – 分区的名称。要了解分区是什么,参考ALTER查询的描述。格式:
YYYYMM 按月自动分区。
any_string 当手动分区。
name (String) – 数据片段的名称。
active (UInt8) – 指示数据片段是否处于激活状态的标志。如果数据片段是激活的,则在表中可以使用它。否则它是被删除状态。未激活的数据片段在合并后仍然存在。
marks (UInt64) – 标记的数量。要获得数据片段的大概行数,可以用索引粒度乘以标记(通常是8192)(这个提示不适用于自适应粒度)。
rows (UInt64) – 行数。
bytes_on_disk (UInt64) – 所有数据片段文件的总大小,单位字节。
data_compressed_bytes (UInt64) – 数据片段占用压缩数据的总大小。所有的附属文件不包括在内(例如,标记文件)。
data_uncompressed_bytes (UInt64) – 数据片段中未压缩数据的总大小。所有的附属文件不包括在内(例如,标记文件)。
marks_bytes (UInt64) – 标记的文件的大小。
modification_time (DateTime) – 修改包含数据片段的目录的时间。这通常对应于创建数据部分的时间。
remove_time (DateTime) – 数据片段变为非激活状态的时间。
refcount (UInt32) – 使用数据片段的位置数量。大于2的值表示数据部分用于查询或合并。
min_date (Date) – 数据片段中日期键的最小值。
max_date (Date) – 数据片段中日期键的最大值。
min_time (DateTime) – 数据片段中日期和时间键的最小值。
max_time(DateTime) – 数据片段中日期和时间键的最小值。
partition_id (String) – 分区的ID。
min_block_number (UInt64) – 合并后组成当前片段的最小数据块编号。
max_block_number (UInt64) – 合并后组成当前片段的最大数据块编号。
level (UInt32) – 合并树的深度。零意味着当前片段是通过插入创建的,而不是通过合并其他片段创建的。
data_version (UInt64) – 用于确定应用于数据片段变化的数字(变化版本高于data_version)。
primary_key_bytes_in_memory (UInt64) – 主键值使用的内存量(以字节为单位)。
primary_key_bytes_in_memory_allocated (UInt64) – 为主键值保留的内存量(以字节为单位)。
is_frozen (UInt8) – 表明存在分区数据备份的标志。1、备份存在。0,备份不存在。更多详细信息,请参考FREEZE PARTITION
database (String) – 数据库名称
table (String) – 表名
engine (String) – 表引擎,没有参数。
path (String) – 数据片段文件的文件夹绝对路径。
disk (String) – 存储数据部分的磁盘的名称。
hash_of_all_files (String) – sipHash128压缩文件。
hash_of_uncompressed_files (String) – sipHash128的未压缩文件(带有标记文件、索引文件等)。
uncompressed_hash_of_compressed_files (String) – sipHash128压缩文件中的数据,就好像它们是未压缩的一样。
bytes (UInt64) – bytes_on_disk别名。
marks_size (UInt64) – marks_bytes别名。
2.14 system.part_log
system.part_log表只有在指定part_log服务器设置时才会创建
此表包含关于MergeTree family表中数据片段发生的事件的信息,例如添加或合并数据。
列:
event_type (Enum) — 数据片段发生的事件的类型。可以是以下值之一:
NEW_PART — 插入新的数据片段。
MERGE_PARTS — 合并数据片段。
DOWNLOAD_PART — 下载数据片段。
REMOVE_PART — 使用DETACH PARTITION删除或者卸载数据片段。
MUTATE_PART — 数据片段变化。
MOVE_PART — 将数据片段从一个磁盘移动到另一个磁盘。
event_date (Date) — 事件日期
event_time (DateTime) — 事件时间
duration_ms (UInt64) — 持续时间。
database (String) — 数据片段所在数据库名称
table (String) — 数据片段所属表名称
part_name (String) — 数据片段名称
partition_id (String) — 数据片段插入的分区的ID。如果分区是通过tuple()进行的,则列接受'all'值。
rows (UInt64) — 数据片段的行数
size_in_bytes (UInt64) — 数据片段的大小,单位为字节
merged_from (Array(String)) — 组成当前片段(合并后)的名称数组。
bytes_uncompressed (UInt64) — 未压缩大小,单位为字节
read_rows (UInt64) — 合并期间读取的行数。
read_bytes (UInt64) — 合并期间读取的字节。
error (UInt16) — 发生错误的代码号。
exception (String) — 发生错误的文本消息。
2.15 system.processes
这个系统表用于实现SHOW PROCESSLIST查询。
列:
user (String) – 发起查询的用户。请记住,对于分布式处理,查询是在default用户下发送到远程服务器的。字段包含指定查询的用户名,而不是此查询发起的查询的用户名。
address (String) – 请求发起的IP地址。分布式处理也是如此。要跟踪分布式查询最初是从哪里发出的,请查看system.processes查询请求者服务器上的进程。
elapsed (Float64) – 请求执行开始后的时间(以秒为单位)。
rows_read (UInt64) – 从表中读取的行数。对于分布式处理,在请求者服务器上是所有远程服务器的总和。
bytes_read (UInt64) – 从表中读取的未压缩字节数。对于分布式处理,在请求者服务器上是所有远程服务器的总和。
total_rows_approx (UInt64) – 应该读取的行总数的近似值。对于分布式处理,在请求者服务器上是所有远程服务器的总和。可以在请求处理期间更新,当需要处理的新数据源变得已知时。
memory_usage (UInt64) – 请求使用的RAM数量。可能不包括某些类型的专用内存。参考max_memory_usage设置。
query (String) – 查询文本。对于INSERT,不包含要插入的数据。
query_id (String) – 查询ID(如果已定义)。
2.16 system.text_log
日志记录。日志级别将进入这个表,可以在可以在服务器设置text_log.level限制。
列:
event_date (Date) - 记录的日期。
event_time (DateTime) - 记录的时间。
microseconds (UInt32) - 记录的微秒。
thread_name (String) — 执行日志记录的线程的名称。
thread_id (UInt64) — 操作系统线程ID。
level (Enum8) - 记录级别。
‘Fatal’ = 1
‘Critical’ = 2
‘Error’ = 3
‘Warning’ = 4
‘Notice’ = 5
‘Information’ = 6
‘Debug’ = 7
‘Trace’ = 8
query_id (String) - 查询ID。
logger_name (LowCardinality(String)) - 日志记录器的名称(即DDLWorker)
message (String) - 消息本身。
revision (UInt32) - ClickHouse 修改。
source_file (LowCardinality(String)) - 完成日志记录的源文件。
source_line (UInt64) - 完成日志记录的源行。
2.17 system.query_log
查询执行的信息。对于每个查询,可以查看开始处理时间,处理持续时间,错误信息以及其他信息。
ClickHouse只在指定query_log服务器参数的情况下创建这个表。这个参数设置日志记录规则,如记录时间间隔或将登录查询的表的名称。
启用查询日志记录,请将log_queries参数设置为1。
2.18 system.query_thread_log
该表记录关于每个查询执行线程的信息。
ClickHouse只在指定query_thread_log服务器参数的情况下创建这个表。此参数设置日志记录规则,如记录时间间隔或将登录查询的表的名称。
要启用查询日志记录,请将log_query_threads参数设置为1。
列:
event_date (Date) — 线程完成查询执行的日期。
event_time (DateTime) — 线程完成查询执行的日期和时间。
query_start_time (DateTime) — 查询执行的开始时间。
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_number (UInt32) — 内部线程ID。
os_thread_id (Int32) — 操作系统线程ID。
master_thread_id (UInt64) — OS初始线程的初始ID。
query (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) — lickhouse-client或另一个TCP客户端的主要版本。
client_version_minor (UInt32) — lickhouse-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请求头。
quota_key (String) — 配额设置中指定的配额键。
revision (UInt32) — ClickHouse 修订版。
thread_numbers (Array(UInt32)) — 参与查询执行的线程数。
ProfileEvents.Names (Array(String)) — 测量不同指标的机器数。它们的描述可以在system.events表中找到
ProfileEvents.Values (Array(UInt64)) — 在ProfileEvents.Names 列中列出的指标值。
默认情况下,每隔7.5秒向表添加一次日志。可以在query_thread_log服务器设置中设置这个时间间隔(参考flush_interval_milliseconds参数)。要将日志从内存缓冲区强制刷新到表中,可以使用系统刷新日志查询。
当手动删除表时,将动态地自动创建该表。注意,所有以前的日志都将被删除。
2.19 system.trace_log
记录由抽样查询分析器收集的堆栈调用信息。
ClickHouse只有在trace_log服务器配置配置部分设置时才会创建这个表。还应该设置query_profiler_real_time__ns
和query_profiler_cpu_time__ns
配置。
要分析日志,请使用addressToLine、addressToSymbol和demangle自检功能。
event_date (Date) — 采样时刻的日期。
event_time (DateTime) — 采样时刻的时间戳。
timestamp_ns (UInt64) — 采样时刻的时间戳纳秒。
revision (UInt32) — ClickHouse服务器构建修订版。
timer_type (Enum8) — 时间类型:
Real 表示时钟时间。
CPU 表示CPU时间。
thread_number (UInt32) — 线程标识符。
query_id (String) — 查询标识符,可用于获取从query_log系统表查询运行的详细信息。
trace (Array(UInt64)) — 抽样时间的堆栈调用跟踪。 每个元素都是ClickHouse服务器进程中的一个虚拟内存地址。
2.20 system.replicas
记录驻留在本地服务器上的副本表的信息和状态。
列:
database (String) - 数据库名称
table (String) - 表名
engine (String) - 表引擎名
is_leader (UInt8) - 副本是否是leader。
每次只能有一个副本成为leader。leader负责选择后台合并执行。注意,可以对ZK中可用且具有会话的任何副本执行写操作,无论它是否是leader。
can_become_leader (UInt8) - 副本是否可以被选举为leader。
is_readonly (UInt8) - 副本是否是read-only只读模式。
如果配置没有带有ZooKeeper的配置部分,或者如果在ZooKeeper中重新初始会话或在重新初始会话期间发生未知错误,则将打开此模式。
is_session_expired (UInt8) - ZooKeeper的会话是否已经过期。基本上与is_readonly相同。
future_parts (UInt32) - 由于尚未完成的插入或合并而出现的数据片段的数量。
parts_to_check (UInt32) - 队列中用于验证的数据片段的数量。如果怀疑某个片段可能被损坏,则将其放入验证队列中。
zookeeper_path (String) - ZooKeeper中表数据库的路径
replica_name (String) - ZooKeeper中副本名称。同一表的不同副本具有不同的名称。
replica_path (String) - ZooKeeper中副本数据的路径。和连接‘zookeeper_path/replicas/replica_path’相同。
columns_version (Int32) - 表结构的版本号。指示执行了多少次ALTER。如果副本有不同的版本,这意味着有些副本还没有完成所有的ALTER。
queue_size (UInt32) - 等待执行的操作的队列大小。操作包括插入数据块、合并和某些其他操作。它通常与未来的部分一致。
inserts_in_queue (UInt32) - 队列中等待插入的数据块的数量。插入通常可以很快地复制。如果这个数字很大,就意味着出了问题。
merges_in_queue (UInt32) - 队列中等待进行的合并的数量。有时候合并是很长的,所以这个值可能会在很长一段时间内大于零。
part_mutations_in_queue (UInt32) - 队列中等待修改的数据片段数量
queue_oldest_time (DateTime) - 如果queue_size大于0,则显示何时将最后的操作添加到队列中。
inserts_oldest_time (DateTime) - 参考queue_oldest_time
merges_oldest_time (DateTime) - 参考queue_oldest_time
part_mutations_oldest_time (DateTime) - 参考queue_oldest_time
接下来的4列只有在使用ZK的活跃会话时才具有非零值。
log_max_index (UInt64) - 常规活动日志中的最大条目数。
log_pointer (UInt64) - 副本复制到其执行队列的一般活动日志中的最大条目数,加1。如果log_pointer比log_max_index小得多,就说明出了问题。
last_queue_update (DateTime) - 上次更新队列的时间。
absolute_delay (UInt64) - 当前副本有多大的秒延迟。
total_replicas (UInt8) - 此表的已知副本的总数。
active_replicas (UInt8) - 在ZooKeeper中具有会话的此表的副本的数量(即,函数副本的数量)。
如果请求所有列,那么该表的工作可能会有点慢,因为每一行都需要从ZooKeeper进行多次读取。
如果没有请求最后4列(log_max_index、log_pointer、total_replicas、active_replicas),那么该表可以快速工作。
2.21 system.settings
记录有关当前用户会话设置的信息。
列:
name (String) — 设置项名称。
value (String) — 设置的值。
changed (UInt8) — 显示设置是否从其默认值更改。
description (String) — 设置项的简单描述。
min (Nullable(String)) — 设置的最小值,如果通过约束设置的话。如果设置没有最小值,则为NULL。
max (Nullable(String)) — 设置的最小值,如果通过约束设置的话。如果设置没有最小值,则为NULL。
readonly (UInt8) — 显示当前用户是否可以更改设置:
0 — 当前用户可以更改设置。
1 — 当前用户无法更改设置。
2.22 system.merge_tree_settings
记录MergeTree表的设置信息。
列:
name (String) — 设置项。
value (String) — 设置值。
description (String) — 设置描述。
type (String) — 设置类型(实现特定的字符串值)。
changed (UInt8) — 设置是在配置中显式定义的还是显式更改的。
2.23 system.table_engines
记录服务器支持的表引擎及其特性支持信息的描述。
列:
name (String) — 表引擎名称
supports_settings (UInt8) — 指示表引擎是否支持设置的标志。
supports_skipping_indices (UInt8) — 指示表引擎是否支持跳越索引的标志。
supports_ttl (UInt8) — 指示表引擎是否支持TTL的标志。
supports_sort_order (UInt8) — 指示表引擎是否支持PARTITION_BY、PRIMARY_KEY、ORDER_BY和SAMPLE_BY的标志。
supports_replication (UInt8) — 指示表引擎是否支持数据复制的标志。
supports_duduplication (UInt8) — 指示表引擎是否支持数据重复数据删除的标志。
2.24 system.tables
记录服务器已知的每个表的元数据。卸载的表不在system.tables中显示。
列:
database (String) — 表所在的数据库的名称。
name (String) — 表名。
engine (String以上是关于clickhouseclickhouse的系统表的主要内容,如果未能解决你的问题,请参考以下文章
clickhouseClickHouse基础实践调优全视角解析
clickhouseClickHouse Practice in EOI