背景
现在ClickHouse已经能正常使用起来了,包括副本和分片。因为ClickHouse已经可以提供服务了,现在需要关心的就是服务期间该数据库的各项性能指标的情况,如CPU、内存、查询等等。其实在安装完ClickHouse之后,有个内置的数据库system,该库下保存了很多需要的信息,类似于MySQL中的information_schema和performance_schema。那么现在就来介绍下ClickHouse的系统库,方便在使用的时候进行分析。
说明
系统表提供的信息如下:
- 服务器的状态、进程以及环境。
- 服务器的内部进程。
系统表:
- 存储于
system
数据库。 - 仅提供数据读取功能。
- 不能被删除或更改,但可以对其进行分离(detach)操作。
大多数系统表将其数据存储在RAM中, 一个ClickHouse服务在刚启动时便会创建此类系统表。
用户可以通过在/etc/clickhouse-server/config.d/
下创建与系统表同名的配置文件, 或者在/etc/clickhouse-server/config.xml
中设置相应配置项,来自定义系统日志表的结构。可供自定义的配置项如下:
<yandex> <query_log> <database>system</database> <table>query_log</table> <partition_by>toYYYYMM(event_date)</partition_by> <ttl>event_date + INTERVAL 30 DAY DELETE</ttl> <!-- <engine>ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 1024</engine> --> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log> </yandex>
说明:
-
database
: 系统日志表所在的数据库。这个选项目前已经不推荐使用。所有的系统日表都位于system
库中。 -
table
: 接收数据写入的系统日志表。 -
partition_by
: 指定PARTITION BY表达式。 -
ttl
: 指定系统日志表TTL选项。 -
flush_interval_milliseconds
: 指定日志表数据刷新到磁盘的时间间隔。 -
engine
: 指定完整的表引擎定义(ENGINE
)。 这个选项与partition_by
以及ttl
冲突。如果与两者一起设置,服务启动时会抛出异常并且退出。
默认情况下,表增长是无限的,可以通过TTL 删除过期日志记录的设置来控制表的大小,也可以使用分区功能 MergeTree 引擎表。进入到system数据库,看该库下的所有表:
:) show tables; ┌─name───────────────────────────┐ │ aggregate_function_combinators │ │ asynchronous_metric_log │ │ asynchronous_metrics │ │ build_options │ │ clusters │ │ collations │ │ columns │ │ contributors │ │ current_roles │ │ data_type_families │ │ databases │ │ detached_parts │ │ dictionaries │ │ disks │ │ distributed_ddl_queue │ │ distribution_queue │ │ enabled_roles │ │ errors │ │ events │ │ formats │ │ functions │ │ grants │ │ graphite_retentions │ │ licenses │ │ macros │ │ merge_tree_settings │ │ merges │ │ metric_log │ │ metrics │ │ models │ │ mutations │ │ numbers │ │ numbers_mt │ │ one │ │ parts │ │ parts_columns │ │ privileges │ │ processes │ │ projection_parts │ │ projection_parts_columns │ │ query_log │ │ query_thread_log │ │ quota_limits │ │ quota_usage │ │ quotas │ │ quotas_usage │ │ replicas │ │ replicated_fetches │ │ replicated_merge_tree_settings │ │ replication_queue │ │ role_grants │ │ roles │ │ row_policies │ │ settings │ │ settings_profile_elements │ │ settings_profiles │ │ stack_trace │ │ storage_policies │ │ table_engines │ │ table_functions │ │ tables │ │ time_zones │ │ trace_log │ │ user_directories │ │ users │ │ zeros │ │ zeros_mt │ │ zookeeper │ └────────────────────────────────┘
现在开始进行相关的介绍说明:
-
aggregate_function_combinators:聚合函数组合器表,聚合函数的名称可以附加一个后缀,会改变原聚合函数的工作方式。
:) select * from aggregate_function_combinators; ┌─name────────┬─is_internal─┐ │ SimpleState │ 0 │ │ OrDefault │ 0 │ │ Distinct │ 0 │ │ Resample │ 0 │ │ ForEach │ 0 │ │ OrNull │ 0 │ │ Merge │ 0 │ │ State │ 0 │ │ Array │ 0 │ │ Null │ 1 │ │ If │ 0 │ └─────────────┴─────────────┘
如组合函数:sumIf、sumArray、avgOrDefault、sumOrNull等等。
- asynchronous_metrics:包含在后台定期计算的指标。 例如,正在使用的 RAM 量。
- asynchronous_metric_log:包含 asynchronous_metrics 的历史值,每分钟保存一次,默认启用。
- build_options:构建选项,包含版本号、系统、编译信息等。
-
clusters:包含有关配置文件中可用的集群及其中的服务器的信息。
:) select * from clusters limit 1\G Row 1: ────── cluster: cluster_3shard_0repl shard_num: 1 shard_weight: 1 replica_num: 1 host_name: 172.16.150.215 host_address: 172.16.150.215 port: 9000 is_local: 1 user: default default_database: errors_count: 0 slowdowns_count: 0 estimated_recovery_time: 0
-
cluster
(String) — 集群名称 -
shard_num
(UInt32) — 分片数量,从1开始计数 -
shard_weight
(UInt32) — 分片权重,写入数据使用 -
replica_num
(UInt32) — 分片的副本,从1开始计数 -
host_name
(String) — 主机名 -
host_address
(String) — IP地址 -
port
(UInt16) — 端口 -
user
(String) — 连接服务器的用户名 -
errors_count
(UInt32) - 此主机无法访问副本的次数 -
estimated_recovery_time
(UInt32) - 距离副本错误计数为零并被认为恢复正常的秒数
:) select * from columns where table = 'ck_3shard_0repl' limit 1 FORMAT Vertical ; Row 1: ────── database: default table: ck_3shard_0repl name: id type: String position: 1 default_kind: default_expression: data_compressed_bytes: 0 data_uncompressed_bytes: 0 marks_bytes: 0 comment: is_in_partition_key: 0 is_in_sorting_key: 1 is_in_primary_key: 1 is_in_sampling_key: 0 compression_codec:
- 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) — 列是否在采样键表达式中的标志
:) select * from databases; ┌─name────┬─engine─┬─data_path─────────────────┬─metadata_path──────────────────────────────────────────────────────┬─uuid─────────────────────────────────┐ │ default │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/f16/f166c36c-b553-4f44-b166-c36cb5535f44/ │ f166c36c-b553-4f44-b166-c36cb5535f44 │ │ system │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/fba/fbadef24-42af-425c-bbad-ef2442afd25c/ │ fbadef24-42af-425c-bbad-ef2442afd25c │ │ testdb │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/97a/97ac5640-b7e0-40fc-97ac-5640b7e030fc/ │ 97ac5640-b7e0-40fc-97ac-5640b7e030fc │ └─────────┴────────┴───────────────────────────┴────────────────────────────────────────────────────────────────────┴──────────────────────────────────────┘
- name (String) — 库名
- engine (String) — 数据库引擎
- data_path (String) — 数据库路径
- metadata_path (String) — 数据库元数据路径
- uuid (UUID) — 数据库 UUID
:) select * from disks; ┌─name────┬─path────────────────┬───free_space─┬──total_space─┬─keep_free_space─┬─type──┐ │ default │ /ccdata/clickhouse/ │ 167115030528 │ 211242639360 │ 0 │ local │ └─────────┴─────────────────────┴──────────────┴──────────────┴─────────────────┴───────┘
- name (String) — 服务器配置中磁盘的名称
-
path (String) — 文件系统中挂载点的路径
-
free_space (UInt64) — 磁盘上的可用空间(以字节为单位)
-
total_space (UInt64) — 磁盘的总空间(以字节为单位)
-
keep_free_space (UInt64) — 在磁盘上保持空闲的磁盘空间量(以字节为单位),在磁盘配置的 keep_free_space_bytes 参数中定义
:) select * from distributed_ddl_queue limit 1\G Row 1: ────── entry: query-0000000001 host_name: 172.16.150.215 host_address: 172.16.150.215 port: 9000 status: Finished cluster: cluster_3shard_0repl query: CREATE TABLE default.ck_3shard_0repl UUID '79de44ac-d101-48fe-b9de-44acd10118fe' ON CLUSTER cluster_3shard_0repl (`id` String, `price` Float64, `create_time` DateTime) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id initiator: dba05:9000 query_start_time: 2021-06-23 14:09:44 query_finish_time: 2021-06-23 14:09:44 query_duration_ms: 2 exception_code: ZOK
- entry (String) — 查询ID
- host_name (String) — 主机名
- host_address (String) — IP
- port (UInt16) — 端口.
- status (Enum8) — 查询状态
- cluster (String) — 集群名称
- query (String) — 执行的语句
- initiator (String) — 执行查询的节点
- query_start_time (DateTime) — 查询开始时间
- query_finish_time (DateTime) — 查询完成时间
- query_duration_ms (UInt64) — 执行时间,毫秒
- exception_code (Enum8) —ZooKeeper 的异常代码
-
database (String) — 库名
-
table (String) — 表名
-
data_path (String) — 包含本地文件的文件夹的路径
-
is_blocked (UInt8) — 标志指示是否阻止向服务器发送本地文件
-
error_count (UInt64) — 错误数
-
data_files (UInt64) — 文件夹中的本地文件数
-
data_compressed_bytes (UInt64) — 本地文件中压缩数据的大小,以字节为单位
-
broken_data_files (UInt64) — 已被标记为已损坏(由于错误)的文件数
-
broken_data_compressed_bytes (UInt64) — 损坏文件中压缩数据的大小,以字节为单位
-
last_exception (String) — 关于发生的最后一个错误(如果有)的文本消息
:) select * from errors limit 1\G Row 1: ────── name: UNKNOWN_TABLE code: 60 value: 4 last_error_time: 2021-06-24 16:36:26 last_error_message: Table system.distributed_queue doesn't exist last_error_trace: [146125178,147250595,257307633,257252227,257275592,262398676,260617881,260615518,262156135,258538161,258535714,263981828,263975971,272522930,272600505,312435887,312442682,313728825,313712426,140717595119269,140717592140285] remote: 0
- name (String) — 错误的名称 (errorCodeToName)。
- code (Int32) — 错误的代码编号。
- value (UInt64) — 此错误发生的次数。
- last_error_time (DateTime) — 上次发生错误的时间。
- last_error_message (String) — 最后一个错误的消息。
- last_error_trace (Array(UInt64)) — 堆栈跟踪,表示存储调用方法的物理地址列表。
- remote (UInt8) — 远程异常(即在分布式查询之一期间收到)。
:) select * from grants; ...
- user_name (Nullable(String)) — 用户名
- role_name (Nullable(String)) — 分配给用户帐户的角色
- access_type (Enum8) — 用户的访问参数
- database (Nullable(String)) — 库名
- table (Nullable(String)) — 表名
- column (Nullable(String)) — 授予访问权限的列的名称
- is_partial_revoke (UInt8) — 逻辑值。 它显示某些权限是否已被撤销。 可能的值:0 — 该行描述了部分撤销;1 — 该行描述了一项授权
- grant_option (UInt8) — 使用 WITH GRANT OPTION 授予权限
:) select * from merge_tree_settings limit 1\G Row 1: ────── name: min_compress_block_size value: 0 changed: 0 description: When granule is written, compress the data in buffer if the size of pending uncompressed data is larger or equal than the specified threshold. If this setting is not set, the corresponding global setting is used. type: UInt64
- name (String) — 设置名称。
- value (String) — 设置值。
- description (String) — 设置描述。
- type (String) — 设置类型(实现特定的字符串值)。
- changed (UInt8) — 是否更改。
:) select * from merges; ...
- database (String) — 表所在的数据库的名称。
- table (String) — 表名。
- elapsed (Float64) — 自合并开始以来经过的时间(以秒为单位)。
- progress (Float64) — 已完成工作的百分比,从 0 到 1。
- num_parts (UInt64) — 要合并的片段数。
- result_part_name (String) — 将作为合并结果形成的部分的名称。
- is_mutation (UInt8) — 如果此过程是分区mutaion,则为 1。
- total_size_bytes_compressed (UInt64) — 合并块中压缩数据的总大小。
- total_size_marks (UInt64) — 合并部分中的标记总数。
- bytes_read_uncompressed (UInt64) — 读取的未压缩字节数。
- rows_read (UInt64) — 读取的行数。
- bytes_written_uncompressed (UInt64) — 写入的未压缩字节数。
- rows_written (UInt64) — 写入的行数。
- memory_usage (UInt64) — 合并过程的内存消耗。
- thread_id (UInt64) — 合并进程的线程 ID。
- merge_type — 当前合并的类型,如果是突变则为空。
- merge_algorithm — 当前合并中使用的算法,如果是突变则为空。
:) select * from mutations; ...
- database (String) — 库名
- table (String) — 表名
- mutation_id (String) — mutation ID。对于复制表,这些 ID 对应于 ZooKeeper的 ../mutations/ 目录中的 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) — 是否完成的标志。1 完成,0 未完成。
- latest_failed_part (String) — 无法改变的最新部分的名称。
- latest_fail_time (Datetime) — 最近一次失败的日期和时间。
- latest_fail_reason (String) — 导致最近失败的异常消息。
:) select * from parts limit 1\G Row 1: ────── partition: 202106 name: 202106_1_1766_852 uuid: 00000000-0000-0000-0000-000000000000 part_type: Compact active: 0 marks: 14 rows: 99120 bytes_on_disk: 186398 data_compressed_bytes: 185069 data_uncompressed_bytes: 2295607 marks_bytes: 1232 modification_time: 2021-06-24 19:33:58 remove_time: 2021-06-24 19:34:58 refcount: 1 min_date: 2021-06-23 max_date: 2021-06-24 min_time: 1970-01-01 08:00:00 max_time: 1970-01-01 08:00:00 partition_id: 202106 min_block_number: 1 max_block_number: 1766 level: 852 data_version: 1 primary_key_bytes_in_memory: 84 primary_key_bytes_in_memory_allocated: 8192 is_frozen: 0 database: system table: asynchronous_metric_log engine: MergeTree disk_name: default path: /ccdata/clickhouse/store/a9b/a9b7ecd5-a9fc-4710-a9b7-ecd5a9fc2710/202106_1_1766_852/ hash_of_all_files: 44309a6a6f7d6da0a45bf80625c9f223 hash_of_uncompressed_files: 2c9d1d988dfce85794ac644af9c982a7 uncompressed_hash_of_compressed_files: 207f50940df4a759f04cc1343750e7c5 delete_ttl_info_min: 1970-01-01 08:00:00 delete_ttl_info_max: 1970-01-01 08:00:00 move_ttl_info.expression: [] move_ttl_info.min: [] move_ttl_info.max: [] default_compression_codec: LZ4 recompression_ttl_info.expression: [] recompression_ttl_info.min: [] recompression_ttl_info.max: [] group_by_ttl_info.expression: [] group_by_ttl_info.min: [] group_by_ttl_info.max: [] rows_where_ttl_info.expression: [] rows_where_ttl_info.min: [] rows_where_ttl_info.max: []
- partition (String) – 分区名称。要了解分区是什么,请参阅 ALTER 查询的说明。
- name (String) – 数据部分的名称。
- part_type (String) — 数据部分存储格式。数据存储格式由 MergeTree 表的 min_bytes_for_wide_part 和 min_rows_for_wide_part 控制。
- active (UInt8) – 指示数据部分是否处于活动状态的标志。如果数据部分处于活动状态,则在表中使用它。否则,它被删除。合并后仍保留非活动数据部分。
- marks (UInt64) – 标记数。要获得数据部分中的大致行数:标记数乘以索引粒度(通常为 8192)。
- rows (UInt64) – 行数。
- bytes_on_disk (UInt64) – 数据总大小(以字节为单位)。
- data_compressed_bytes (UInt64) – 数据部分中压缩数据的总大小。不包括所有辅助文件(例如,带有标记的文件)。
- data_uncompressed_bytes (UInt64) – 数据部分中未压缩数据的总大小。不包括所有辅助文件(例如,带有标记的文件)。
- marks_bytes (UInt64) – 带有标记的文件的大小。
- modify_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) – 合并树的深度。0表示是通过插入而不是通过合并创建的。
- data_version (UInt64) – 用于确定应将哪些mutations应用于数据部分(版本高于 data_version 的突变)的数字。
- primary_key_bytes_in_memory (UInt64) – 主键值使用的内存量(以字节为单位)。
- primary_key_bytes_in_memory_allocated (UInt64) – 为主键值保留的内存量(以字节为单位)。
- is_frozen (UInt8) – 表明存在分区数据备份的标志。 1、备份存在。 0,备份不存在。
- 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(字符串)——压缩文件中的 sipHash128 数据,就好像它们是未压缩的一样。
- delete_ttl_info_min (DateTime) — TTL DELETE 规则的日期和时间键的最小值。
- delete_ttl_info_max (DateTime) — TTL DELETE 规则的日期和时间键的最大值。
- move_ttl_info.expression (Array(String)) — 表达式数组。每个表达式定义一个 TTL MOVE 规则。
- move_ttl_info.min (Array(DateTime)) — 日期和时间值数组。每个元素都描述了 TTL MOVE 规则的最小键值。
- move_ttl_info.max (Array(DateTime)) — 日期和时间值数组。每个元素都描述了 TTL MOVE 规则的最大键值。
- bytes (UInt64) – 数据总大小(以字节为单位),bytes_on_disk 的别名。
- marks_size (UInt64) – 标记字节的别名。
:) select * from parts_columns limit 1 FORMAT Vertical; Row 1: ────── partition: 202106 name: 202106_1_1781_867 uuid: 00000000-0000-0000-0000-000000000000 part_type: Compact active: 0 marks: 14 rows: 99960 bytes_on_disk: 187890 data_compressed_bytes: 186561 data_uncompressed_bytes: 2314927 marks_bytes: 1232 modification_time: 2021-06-24 19:48:58 remove_time: 2021-06-24 19:49:58 refcount: 1 min_date: 2021-06-23 max_date: 2021-06-24 min_time: 1970-01-01 08:00:00 max_time: 1970-01-01 08:00:00 partition_id: 202106 min_block_number: 1 max_block_number: 1781 level: 867 data_version: 1 primary_key_bytes_in_memory: 84 primary_key_bytes_in_memory_allocated: 8192 database: system table: asynchronous_metric_log engine: MergeTree disk_name: default path: /ccdata/clickhouse/store/a9b/a9b7ecd5-a9fc-4710-a9b7-ecd5a9fc2710/202106_1_1781_867/ column: event_date type: Date column_position: 1 default_kind: default_expression: column_bytes_on_disk: 0 column_data_compressed_bytes: 0 column_data_uncompressed_bytes: 0 column_marks_bytes: 0
大部分和parts表一样,多了列信息:
- column (String) — 列名。
- type (String) — 列类型。
- column_position (UInt64) — 列在表中的位置,从 1 开始。
- default_kind (String) — 默认值的表达式类型(DEFAULT、MATERIALIZED、ALIAS),如果未定义则为空字符串。
- default_expression (String) — 默认值的表达式,如果未定义则为空字符串。
- column_bytes_on_disk (UInt64) — 列的总大小(以字节为单位)。
- column_data_compressed_bytes (UInt64) — 列中压缩数据的总大小,以字节为单位。
- column_data_uncompressed_bytes (UInt64) — 列中解压缩数据的总大小,以字节为单位。
- column_marks_bytes (UInt64) — 带有标记的列的大小,以字节为单位。
:) select * from processes FORMAT Vertical; Row 1: ────── is_initial_query: 1 user: default query_id: bbb30c0e-90f4-48fc-8caa-5e8c064fd08f address: ::ffff:127.0.0.1 port: 55524 initial_user: default initial_query_id: bbb30c0e-90f4-48fc-8caa-5e8c064fd08f initial_address: ::ffff:127.0.0.1 initial_port: 55524 interface: 1 os_user: operadmin client_hostname: dba05 client_name: ClickHouse client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 3 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: elapsed: 0.000810712 is_cancelled: 0 read_rows: 0 read_bytes: 0 total_rows_approx: 0 written_rows: 0 written_bytes: 0 memory_usage: 0 peak_memory_usage: 0 query: select * from processes FORMAT Vertical; thread_ids: [31653] ProfileEvents.Names: ['Query','SelectQuery','ContextLock','RWLockAcquiredReadLocks'] ProfileEvents.Values: [1,1,12,1] Settings.Names: ['load_balancing','max_memory_usage'] Settings.Values: ['random','10000000000'] current_database: system
-
user (String) – 进行查询的用户。对于分布式处理,查询将发送到默认用户下的远程服务器。该字段包含特定查询的用户名,而不是该查询发起的查询的用户名。
-
address (String) – 请求的 IP 地址。
-
elapsed (Float64) – 执行时间(以秒为单位)。
-
rows_read (UInt64) – 从表中读取的行数。对于分布式处理,在请求者服务器上,这是所有远程服务器的总数。
-
bytes_read (UInt64) – 从表中读取的未压缩字节数。对于分布式处理,在请求者服务器上,这是所有远程服务器的总数。
-
total_rows_approx (UInt64) – 应该读取的总行数的近似值。对于分布式处理,在请求者服务器上,这是所有远程服务器的总数。当要处理的新源已知时,它可以在请求处理期间更新。
-
memory_usage (UInt64) – 请求使用的 RAM 量。它可能不包括某些类型的专用内存。
-
query (String) – 查询语句,对于INSERT,不包括要插入的数据。
-
query_id (String) – 查询ID(如果已定义)。
1. 查询执行成功,则会创建 QueryStart 和 QueryFinish 类型的事件。
2. 查询期间发生错误,则会创建QueryStart 和 ExceptionWhileProcessing 类型的事件。
3. 查询之前发生错误,则会创建一个具有 ExceptionBeforeStart 类型的事件。
:) select * from query_log limit 1 \G Row 1: ────── type: QueryStart event_date: 2021-06-23 event_time: 2021-06-23 13:51:36 event_time_microseconds: 2021-06-23 13:51:36.355724 query_start_time: 2021-06-23 13:51:36 query_start_time_microseconds: 2021-06-23 13:51:36.355724 query_duration_ms: 0 read_rows: 0 read_bytes: 0 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 0 current_database: default query: SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]{2,}')) AS res FROM (SELECT name FROM system.functions UNION ALL SELECT name FROM system.table_engines UNION ALL SELECT name FROM system.formats UNION ALL SELECT name FROM system.table_functions UNION ALL SELECT name FROM system.data_type_families UNION ALL SELECT name FROM system.merge_tree_settings UNION ALL SELECT name FROM system.settings UNION ALL SELECT cluster FROM system.clusters UNION ALL SELECT macro FROM system.macros UNION ALL SELECT policy_name FROM system.storage_policies UNION ALL SELECT concat(func.name, comb.name) FROM system.functions AS func CROSS JOIN system.aggregate_function_combinators AS comb WHERE is_aggregate UNION ALL SELECT name FROM system.databases LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.tables LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.dictionaries LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.columns LIMIT 10000) WHERE notEmpty(res) normalized_query_hash: 6666026786019643712 query_kind: Select databases: ['system'] tables: ['system.aggregate_function_combinators','system.clusters','system.columns','system.data_type_families','system.databases','system.dictionaries','system.formats','system.functions','system.macros','system.merge_tree_settings','system.settings','system.storage_policies','system.table_engines','system.table_functions','system.tables'] columns: ['system.aggregate_function_combinators.name','system.clusters.cluster','system.columns.name','system.data_type_families.name','system.databases.name','system.dictionaries.name','system.formats.name','system.functions.is_aggregate','system.functions.name','system.macros.macro','system.merge_tree_settings.name','system.settings.name','system.storage_policies.policy_name','system.table_engines.name','system.table_functions.name','system.tables.name'] projections: [] exception_code: 0 exception: stack_trace: is_initial_query: 1 user: default query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 address: ::ffff:127.0.0.1 port: 35356 initial_user: default initial_query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 initial_address: ::ffff:127.0.0.1 initial_port: 35356 interface: 1 os_user: client_hostname: client_name: ClickHouse client client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 0 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: revision: 54451 log_comment: thread_ids: [] ProfileEvents.Names: [] ProfileEvents.Values: [] Settings.Names: ['load_balancing','max_memory_usage'] Settings.Values: ['random','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: []
-
type (Enum8) — 执行查询时发生的事件类型:
'QueryStart' = 1 — 成功开始查询执行。
'QueryFinish' = 2 — 查询执行成功结束。
'ExceptionBeforeStart' = 3 — 查询执行开始前的异常。
'ExceptionWhileProcessing' = 4 — 查询执行期间的异常。 -
event_date (Date) — 查询开始日期。
-
event_time (DateTime) — 查询开始时间。
-
event_time_microseconds (DateTime) — 以微秒精度查询开始时间。
-
query_start_time (DateTime) — 查询执行的开始时间。
-
query_start_time_microseconds (DateTime64) — 以微秒精度开始执行查询的时间。
-
query_duration_ms (UInt64) — 以毫秒为单位的查询执行持续时间。
-
read_rows (UInt64) — 从参与查询的所有表和表函数中读取的总行数。它包括通常的子查询、IN 和 JOIN 的子查询。对于分布式查询 read_rows 包括在所有副本读取的总行数。每个副本发送它的 read_rows 值,查询的服务器发起者汇总所有接收到的和本地的值。
-
read_bytes (UInt64) — 从参与查询的所有表和表函数中读取的总字节数。它包括通常的子查询、IN 和 JOIN 的子查询。对于分布式查询 read_bytes 包括在所有副本读取的总行数。每个副本发送它的 read_bytes 值,查询的服务器发起者汇总所有接收到的和本地的值。
-
write_rows (UInt64) — 对于 INSERT 查询,写入的行数。对于其他查询,列值为 0。
-
write_bytes (UInt64) — 对于 INSERT 查询,写入的字节数。对于其他查询,列值为 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)) — 查询的类型。
-
database (Array(LowCardinality(String))) — 查询中存在的数据库的名称。
-
tables (Array(LowCardinality(String))) — 查询中存在的表的名称。
-
columns (Array(LowCardinality(String))) — 查询中存在的列的名称。
-
exception_code (Int32) — 异常代码。
-
exception(字符串)——异常消息。
-
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) — 在配额设置中指定的配额键(见 keyed)。
-
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)) — 在查询执行期间使用的表函数的规范名称。
1. 配置log_query_threads参数
2. 设置log_query_threads=1
刷新周期通过flush_interval_milliseconds 参数设置,使用 SYSTEM FLUSH LOGS 要强制刷新。
:) select * from query_thread_log limit 1\G Row 1: ────── event_date: 2021-06-23 event_time: 2021-06-23 13:51:36 event_time_microseconds: 2021-06-23 13:51:36.369932 query_start_time: 2021-06-23 13:51:36 query_start_time_microseconds: 2021-06-23 13:51:36.366623 query_duration_ms: 3 read_rows: 1059 read_bytes: 35127 written_rows: 0 written_bytes: 0 memory_usage: 0 peak_memory_usage: 0 thread_name: QueryPipelineEx thread_id: 25324 master_thread_id: 25063 current_database: default query: SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]{2,}')) AS res FROM (SELECT name FROM system.functions UNION ALL SELECT name FROM system.table_engines UNION ALL SELECT name FROM system.formats UNION ALL SELECT name FROM system.table_functions UNION ALL SELECT name FROM system.data_type_families UNION ALL SELECT name FROM system.merge_tree_settings UNION ALL SELECT name FROM system.settings UNION ALL SELECT cluster FROM system.clusters UNION ALL SELECT macro FROM system.macros UNION ALL SELECT policy_name FROM system.storage_policies UNION ALL SELECT concat(func.name, comb.name) FROM system.functions AS func CROSS JOIN system.aggregate_function_combinators AS comb WHERE is_aggregate UNION ALL SELECT name FROM system.databases LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.tables LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.dictionaries LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.columns LIMIT 10000) WHERE notEmpty(res) normalized_query_hash: 6666026786019643712 is_initial_query: 1 user: default query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 address: ::ffff:127.0.0.1 port: 35356 initial_user: default initial_query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 initial_address: ::ffff:127.0.0.1 initial_port: 35356 interface: 1 os_user: client_hostname: client_name: ClickHouse client client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 0 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: revision: 54451 ProfileEvents.Names: ['ArenaAllocChunks','ArenaAllocBytes','FunctionExecute','SelectedRows','SelectedBytes','ContextLock','RWLockAcquiredReadLocks','RWLockReadersWaitMilliseconds','RealTimeMicroseconds','UserTimeMicroseconds','SoftPageFaults','OSCPUWaitMicroseconds','OSCPUVirtualTimeMicroseconds'] ProfileEvents.Values: [2,24576,6,1059,35127,4,65,1,3280,1616,45,14,1616]
-
event_date (Date) — 线程完成查询执行的日期。
-
event_time (DateTime) — 线程完成查询执行的日期和时间。
-
event_time_microsecinds (DateTime) — 线程以微秒精度完成查询执行的日期和时间。
-
query_start_time (DateTime) — 查询执行的开始时间。
-
query_start_time_microseconds (DateTime64) — 以微秒精度开始执行查询的时间。
-
query_duration_ms (UInt64) — 查询执行的持续时间。
-
read_rows (UInt64) — 读取的行数。
-
read_bytes (UInt64) — 读取字节数。
-
write_rows (UInt64) — 对于 INSERT 查询,写入的行数。对于其他查询,列值为 0。
-
write_bytes (UInt64) — 对于 INSERT 查询,写入的字节数。对于其他查询,列值为 0。
-
memory_usage (Int64) — 此线程上下文中已分配和已释放内存量之间的差异。
-
peak_memory_usage (Int64) — 此线程上下文中已分配和已释放内存量之间的最大差异。
-
thread_name (String) — 线程的名称。
-
thread_number (UInt32) — 内部线程 ID。
-
thread_id (Int32) — 线程 ID。
-
master_thread_id (UInt64) — 初始线程的操作系统初始 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) — 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 标头。
-
quota_key (String) — 在配额设置中指定的“配额键”(参见 keyed)。
-
修订版 (UInt32) — ClickHouse 修订版。
-
ProfileEvents.Names (Array(String)) — 衡量该线程不同指标的计数器。它们的描述可以在表 system.events 中找到。
- ProfileEvents.Values (Array(UInt64)) — ProfileEvents.Names 列中列出的此线程的指标值。
:) select * from quota_limits; ...
-
quota_name (String) — 配额名称。
-
duration (UInt32) — 计算资源消耗的时间间隔长度,以秒为单位。
-
is_randomized_interval (UInt8) — 逻辑值。它显示间隔是否是随机的。如果间隔不是随机的,则它总是同时开始。例如,1 分钟的间隔总是从整数分钟开始(即它可以从 11:20:00 开始,但它永远不会从 11:20:01 开始),一天的间隔总是从 UTC 午夜开始.如果间隔是随机的,则第一个间隔在随机时间开始,随后的间隔一个接一个开始。价值观:
0 — 间隔不是随机的。
1 — 间隔是随机的。 -
max_queries (Nullable(UInt64)) - 最大查询数。
-
max_query_selects (Nullable(UInt64)) — select最大数量。
-
max_query_inserts (Nullable(UInt64)) — insert最大数量。
-
max_errors (Nullable(UInt64)) — 最大错误数。
-
max_result_rows (Nullable(UInt64)) — 结果行的最大数量。
-
max_result_bytes (Nullable(UInt64)) — 用于存储查询结果的最大 RAM 卷数(以字节为单位)。
-
max_read_rows (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的最大行数。
-
max_read_bytes (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的最大字节数。
-
max_execution_time (Nullable(Float64)) — 查询执行时间的最大值,以秒为单位。
:) select * from quota_usage; ...
-
quota_name (String) — 配额名称。
-
quota_key(String) — 键值。例如,如果keys = [ip address],那么quota_key 的值可能是“192.168.1.1”。
-
start_time(Nullable(DateTime)) — 计算资源消耗的开始时间。
-
end_time(Nullable(DateTime)) — 计算资源消耗的结束时间。
-
duration (Nullable(UInt64)) 计算资源消耗的时间间隔长度,以秒为单位。
-
queries (Nullable(UInt64)) — 此时间间隔内的请求总数。
-
query_selects (Nullable(UInt64)) — 此时间间隔内选择请求的总数。
-
query_inserts (Nullable(UInt64)) — 此时间间隔内插入请求的总数。
-
max_queries (Nullable(UInt64)) 最大请求数。
-
errors (Nullable(UInt64)) — 引发异常的查询数。
-
max_errors (Nullable(UInt64)) — 最大错误数。
-
result_rows (Nullable(UInt64)) — 结果给出的总行数。
-
max_result_rows (Nullable(UInt64)) — 结果行的最大数量。
-
result_bytes (Nullable(UInt64)) — 用于存储查询结果的 RAM 容量(以字节为单位)。
-
max_result_bytes (Nullable(UInt64)) — 用于存储查询结果的最大 RAM 容量,以字节为单位。
-
read_rows (Nullable(UInt64)) — 从表中读取的源行总数,用于在所有远程服务器上运行查询。
-
max_read_rows (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的最大行数。
-
read_bytes (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的总字节数。
-
max_read_bytes (Nullable(UInt64)) — 从所有表和表函数读取的最大字节数。
-
execution_time (Nullable(Float64)) — 总查询执行时间,以秒为单位(挂墙时间)。
-
max_execution_time (Nullable(Float64)) — 查询执行时间的最大值。
:) select * from quotas; ...
-
name (String) — 配额名称。
-
id (UUID) — 配额 ID。
-
storage(String) — 配额的存储。可能的值:“users.xml”(如果是在 users.xml 文件中配置的配额),“disk”(如果是由 SQL 查询配置的配额)。
-
keys (Array(Enum8)) — Key 指定配额的共享方式。如果两个连接使用相同的配额和密钥,则它们共享相同数量的资源:
[] — 所有用户共享相同的配额。
['user_name'] — 具有相同用户名的连接共享相同的配额。
['ip_address'] — 来自同一 IP 的连接共享相同的配额。
['client_key'] — 具有相同密钥的连接共享相同的配额。密钥必须由客户端明确提供。使用clickhouse-client时,在--quota-key参数中传递一个key值,或者在客户端配置文件中使用quota_key参数。使用 HTTP 接口时,请使用 X-ClickHouse-Quota 标头。
['user_name', 'client_key'] — 具有相同 client_key 的连接共享相同的配额。如果客户端未提供密钥,则会跟踪 user_name 的 qouta。
['client_key', 'ip_address'] — 具有相同 client_key 的连接共享相同的配额。如果客户端未提供密钥,则会跟踪 ip_address 的 qouta。 -
durations (Array(UInt64)) — 以秒为单位的时间间隔长度。
-
apply_to_all (UInt8) — 逻辑值。它显示配额应用于哪些用户。价值观:
0 — 配额适用于在 apply_to_list 中指定的用户。
1 — 配额适用于除 apply_to_except 中列出的用户之外的所有用户。 -
apply_to_list (Array(String)) — 应应用配额的用户名/角色列表。
-
apply_to_except (Array(String)) — 配额不应适用的用户名/角色列表。
:) select * from quotas_usage; ...
-
quota_name (String) — 配额名称。
-
quota_key (String) — 键值。
-
is_current (UInt8) — 当前用户的配额使用情况。
-
start_time (Nullable(DateTime))) — 计算资源消耗的开始时间。
-
end_time (Nullable(DateTime))) — 计算资源消耗的结束时间。
-
duration (Nullable(UInt32)) 计算资源消耗的时间间隔长度,以秒为单位。
-
queries (Nullable(UInt64)) — 此时间间隔内的请求总数。
-
max_queries (Nullable(UInt64)) 最大请求数。
-
query_selects (Nullable(UInt64)) — 此时间间隔内选择请求的总数。
-
max_query_selects (Nullable(UInt64)) 选择请求的最大数量。
-
query_inserts (Nullable(UInt64)) — 此时间间隔内插入请求的总数。
-
max_query_inserts (Nullable(UInt64)) — 插入请求的最大数量。
-
errors (Nullable(UInt64)) — 引发异常的查询数。
-
max_errors (Nullable(UInt64)) — 最大错误数。
-
result_rows (Nullable(UInt64)) — 作为结果给出的总行数。
-
max_result_rows (Nullable(UInt64)) — 从表中读取的最大源行数。
-
result_bytes (Nullable(UInt64)) — 用于存储查询结果的 RAM 容量(以字节为单位)。
-
max_result_bytes (Nullable(UInt64)) — 用于存储查询结果的最大 RAM 容量,以字节为单位。
-
read_rows (Nullable(UInt64))) — 从表中读取的源行总数,用于在所有远程服务器上运行查询。
-
max_read_rows (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的最大行数。
-
read_bytes (Nullable(UInt64)) — 从参与查询的所有表和表函数读取的总字节数。
-
max_read_bytes (Nullable(UInt64)) — 从所有表和表函数读取的最大字节数。
-
execution_time (Nullable(Float64)) — 总查询执行时间,以秒为单位(挂墙时间)。
-
max_execution_time (Nullable(Float64)) — 查询执行时间的最大值。
:) select * from replicas\G Row 1: ────── database: default table: ck_3shard_0repl engine: ReplicatedMergeTree is_leader: 1 can_become_leader: 1 is_readonly: 0 is_session_expired: 0 future_parts: 0 parts_to_check: 0 zookeeper_path: /clickhouse/tables/1/ck_3shard_0repl replica_name: dba05 replica_path: /clickhouse/tables/1/ck_3shard_0repl/replicas/dba05 columns_version: -1 queue_size: 0 inserts_in_queue: 0 merges_in_queue: 0 part_mutations_in_queue: 0 queue_oldest_time: 1970-01-01 08:00:00 inserts_oldest_time: 1970-01-01 08:00:00 merges_oldest_time: 1970-01-01 08:00:00 part_mutations_oldest_time: 1970-01-01 08:00:00 oldest_part_to_get: oldest_part_to_merge_to: oldest_part_to_mutate_to: log_max_index: 0 log_pointer: 0 last_queue_update: 1970-01-01 08:00:00 absolute_delay: 0 total_replicas: 1 active_replicas: 1 zookeeper_exception:
-
database(字符串)- 数据库名称
-
table (String) - 表名
-
engine(字符串) - 表引擎名称
-
is_leader (UInt8) - 副本是否是领导者。
多个副本可以同时成为领导者。使用merge_tree 设置replicated_can_become_leader 可以防止副本成为领导者。领导者负责后台合并。
注意,可以对任何可用的且在 ZK 中具有会话的副本执行写入,无论它是否是领导者。 -
can_become_leader (UInt8) - 副本是否可以成为领导者。
-
is_readonly (UInt8) - 副本是否处于只读模式。
如果配置中没有包含 ZooKeeper 的部分,或则ZooKeeper异常,则会打开此模式。 -
is_session_expired (UInt8) - 与 ZooKeeper 的会话已过期。与 is_readonly 基本相同。
-
future_parts (UInt32) - 作为尚未完成的 INSERT 或合并的结果出现的数据部分的数量。
-
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) - 等待执行的操作的队列大小。操作包括插入数据块、合并和某些其他操作。它通常与 future_parts 重合。
-
inserts_in_queue (UInt32) - 需要插入的数据块的数量。插入通常复制得相当快。如果这个数字很大,这意味着有问题。
-
merges_in_queue (UInt32) - 等待合并的数量。有时合并很长,所以这个值可能会在很长一段时间内大于零。
-
part_mutations_in_queue (UInt32) - 等待进行的mutation数量。
-
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
-
log_max_index (UInt64) - 一般活动日志中的最大条目数。
-
log_pointer (UInt64) - 副本复制到其执行队列的一般活动日志中的最大条目数,加一。如果 log_pointer 比 log_max_index 小得多,则说明有问题。
-
last_queue_update (DateTime) - 上次更新队列的时间。
-
absolute_delay (UInt64) - 当前副本有多大的延迟(以秒为单位)。
-
total_replicas (UInt8) - 此表的已知副本总数。
-
active_replicas (UInt8) - 在 ZooKeeper 中具有会话的该表的副本数量(副本的数量)。
-
database (String) — 数据库的名称。
-
table (String) — 表的名称。
-
elapsed (Float64) — 显示当前正在运行的后台提取自开始以来经过的时间(以秒为单位)。
-
progress (Float64) — 已完成工作的百分比,从 0 到 1。
-
result_part_name (String) — 作为显示当前正在运行的后台提取的结果而形成的部分的名称。
-
result_part_path (String) — 作为显示当前正在运行的后台提取的结果而形成的部分的绝对路径。
-
partition_id (String) — 分区的 ID。
-
total_size_bytes_compressed (UInt64) — 结果部分中压缩数据的总大小(以字节为单位)。
-
bytes_read_compressed (UInt64) — 从结果部分读取的压缩字节数。
-
source_replica_path (String) — 源副本的绝对路径。
-
source_replica_hostname (String) — 源副本的主机名。
-
source_replica_port (UInt16) — 源副本的端口号。
-
interserver_scheme (String) — 服务器间方案的名称。
-
URI (String) — 统一资源标识符。
-
to_detached (UInt8) — 该标志指示是否正在使用 TO DETACHED 表达式执行当前正在运行的后台提取。
-
thread_id (UInt64) — 线程标识符。
-
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则为空。
:) select * from role_grants; ...
-
user_name (Nullable(String)) — 用户名。
-
role_name (Nullable(String)) — 角色名称。
-
grant_role_name (String) — 授予 role_name 角色的角色名称。 要将一个角色授予另一个角色,请使用 GRANT role1 TO role2。
-
grant_role_is_default (UInt8) — 显示 grant_role 是否为默认角色的标志。 可能的值:
1 — grant_role 是默认角色。
0 — grant_role 不是默认角色。 -
with_admin_option (UInt8) — 显示 grant_role 是否是具有 ADMIN OPTION 权限的角色的标志。 可能的值:
1 — 该角色具有 ADMIN OPTION 权限。
0 — 没有 ADMIN OPTION 权限的角色。
-
name (String) — 角色名称。
-
id (UUID) — 角色 ID。
-
storage (String) — 角色存储的路径。 在 access_control_path 参数中配置。
-
name (String) — 行策略的名称。
-
short_name (String) — 行策略的简称。行策略的名称是复合的,如:myfilter ON mydb.mytable。“myfilter ON mydb.mytable”是行策略的名称,“myfilter”是它的简称。
-
database (String) ——数据库名称。
-
table (String) — 表名。
-
id (UUID) — 行策略 ID。
-
storage (String) — 存储行策略的目录的名称。
-
select_filter (Nullable(String)) — 用于过滤行的条件。
-
is_restrictive (UInt8) — 显示行策略是否限制对行的访问,请参阅 CREATE ROW POLICY:
0 — 行策略是用 AS PERMISSIVE 子句定义的。
1 — 行策略是用 AS RESTRICTIVE 子句定义的。 -
apply_to_all (UInt8) — 显示为所有角色和/或用户设置的行策略。
-
apply_to_list (Array(String)) — 应用行策略的角色和/或用户列表。
-
apply_to_except (Array(String)) — 行策略应用于除列出的角色和/或用户之外的所有角色和/或用户。
-
name (String) — 设置名称。
-
value (String) — 设置值。
-
changed (UInt8) — 是否从其默认值更改。
-
description (String) — 设置描述。
-
min (Nullable(String)) — 设置的最小值,如果有的话是通过约束设置的。 如果设置没有最小值,则包含 NULL。
-
max (Nullable(String)) — 设置的最大值,如果有的话是通过约束设置的。 如果设置没有最大值,则包含 NULL。
-
readonly (UInt8) — 显示当前用户是否可以更改设置:
0 — 当前用户可以更改设置。
1 — 当前用户无法更改设置。
-
profile_name (Nullable(String)) — 配置文件名称。
-
user_name (Nullable(String)) — 用户名。
-
role_name (Nullable(String)) — 角色名称。
-
index (UInt64) — 设置配置文件元素的序列号。
-
setting_name (Nullable(String)) — 设置名称。
-
value (Nullable(String)) — 设置值。
-
min (Nullable(String)) — 设置的最小值。 如果未设置,则为 NULL。
-
max (Nullable(String)) — 设置的最大值。 如果未设置,则为 NULL。
-
readonly (Nullable(UInt8)) — 仅允许读取查询的配置文件。
-
inherit_profile (Nullable(String)) — 此设置配置文件的父配置文件,将从其父配置文件继承所有设置的值和约束(最小、最大、只读)。如果未设置,则为 NULL。
-
name (String) — 设置配置文件名称。
-
id (UUID) — 设置配置文件 ID。
-
storage (String) — 设置配置文件的存储路径。 在 access_control_path 参数中配置。
-
num_elements (UInt64) — system.settings_profile_elements 表中此配置文件的元素数。
-
apply_to_all (UInt8) — 显示为所有角色和/或用户设置的设置配置文件。
-
apply_to_list (Array(String)) — 应用设置配置文件的角色和/或用户的列表。
-
apply_to_except (Array(String)) — 设置配置文件应用于除列出的角色和/或用户之外的所有角色和/或用户。
-
thread_name (String) — 线程名称。
-
thread_id (UInt64) — 线程标识符。
-
query_id (String) — 查询标识符,可用于获取有关从 query_log 系统表运行的查询的详细信息。
-
trace (Array(UInt64)) — 堆栈跟踪,表示存储调用方法的物理地址列表。
-
policy_name (String) — 存储策略的名称。
-
volume_name (String) — 存储策略中定义的卷名。
-
volume_priority (UInt64) — 配置中的卷顺序号。
-
disks (Array(String)) — 磁盘名称,在存储策略中定义。
-
max_data_part_size (UInt64) — 可存储在卷磁盘上的数据部分的最大大小(0 — 无限制)。
-
move_factor (Float64) — 可用磁盘空间的比率。当比率超过配置参数的值时,ClickHouse 开始将数据按顺序移动到下一个卷。
-
prefer_not_to_merge (UInt8) — preferred_not_to_merge 设置的值。启用此设置后,不允许合并此卷上的数据。这允许控制 ClickHouse 如何处理慢速磁盘。
如果存储策略包含多个卷,则每个卷的信息都存储在表的单独行中。
:) select * from table_engines where name ='ReplicatedMergeTree' FORMAT Vertical; Row 1: ────── name: ReplicatedMergeTree supports_settings: 1 supports_skipping_indices: 1 supports_projections: 1 supports_sort_order: 1 supports_ttl: 1 supports_replication: 1 supports_deduplication: 1 supports_parallel_insert: 1
-
name (String) — 表引擎的名称。
-
support_settings (UInt8) — 指示表引擎是否支持 SETTINGS 子句的标志。
-
support_skipping_indices (UInt8) — 指示表引擎是否支持跳过索引的标志。
-
support_ttl (UInt8) — 指示表引擎是否支持 TTL 的标志。
-
support_sort_order (UInt8) — 指示表引擎是否支持子句 PARTITION_BY、PRIMARY_KEY、ORDER_BY 和 SAMPLE_BY 的标志。
-
support_replication (UInt8) — 指示表引擎是否支持数据复制的标志。
-
support_duduplication (UInt8) — 指示表引擎是否支持重复数据删除的标志。
-
support_parallel_insert (UInt8) — 指示表引擎是否支持并行插入的标志(请参阅 max_insert_threads 设置)。
select ... from mysql(); select ... from remote(); ...
:) select * from tables where name ='ck_3shard_0repl' FORMAT Vertical; Row 1: ────── database: default name: ck_3shard_0repl uuid: 79de44ac-d101-48fe-b9de-44acd10118fe engine: ReplicatedMergeTree is_temporary: 0 data_paths: ['/ccdata/clickhouse/store/79d/79de44ac-d101-48fe-b9de-44acd10118fe/'] metadata_path: /ccdata/clickhouse/store/f16/f166c36c-b553-4f44-b166-c36cb5535f44/ck_3shard_0repl.sql metadata_modification_time: 2021-06-23 14:09:44 dependencies_database: [] dependencies_table: [] create_table_query: CREATE TABLE default.ck_3shard_0repl (`id` String, `price` Float64, `create_time` DateTime) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id SETTINGS index_granularity = 8192 engine_full: ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id SETTINGS index_granularity = 8192 partition_key: toYYYYMM(create_time) sorting_key: id primary_key: id sampling_key: storage_policy: default total_rows: 0 total_bytes: 0 lifetime_rows: ᴺᵁᴸᴸ lifetime_bytes: ᴺᵁᴸᴸ comment:
-
database (String) — 表所在的数据库的名称。
-
name (String) — 表名。
-
engine (String) — 表引擎名称(不带参数)。
-
is_temporary (UInt8) - 指示表是否为临时表的标志。
-
data_path (String) - 文件系统中表数据的路径。
-
metadata_path (String) - 文件系统中表元数据的路径。
-
metadata_modification_time (DateTime) - 表元数据的最新修改时间。
-
dependencies_database (Array(String)) - 数据库依赖项。
-
dependencies_table (Array(String)) - 表依赖项(基于当前表的 MaterializedView 表)。
-
create_table_query (String) - 用于创建表的查询。
-
engine_full (String) - 表引擎的参数。
-
partition_key (String) - 表中指定的分区键表达式。
-
sort_key (String) - 表中指定的排序键表达式。
-
primary_key (String) - 表中指定的主键表达式。
-
sample_key (String) - 表中指定的采样键表达式。
-
storage_policy (String) - 存储策略:
MergeTree
Distributed -
total_rows (Nullable(UInt64)) - 总行数,如果可以快速确定表中的确切行数,否则为 NULL(包括底层 Buffer 表)。
-
total_bytes (Nullable(UInt64)) - 总字节数,如果可以快速确定存储表的确切字节数,否则为 NULL(不包括任何底层存储)。
如果表将数据存储在磁盘上,则返回磁盘上的已用空间(即压缩空间)。
如果表将数据存储在内存中,则返回内存中已用字节的近似数量。 -
life_rows (Nullable(UInt64)) - 自服务器启动以来插入的总行数(仅适用于缓冲区表)。
-
life_bytes (Nullable(UInt64)) - 自服务器启动以来插入的总字节数(仅适用于缓冲区表)。
-
comment (String) - 表的注释。
-
event_date (Date) — 采样的日期。
-
event_time (DateTime) — 采样的时间戳。
-
event_time_microseconds (DateTime64) — 具有微秒精度的采样时刻的时间戳。
-
timestamp_ns (UInt64) — 以纳秒为单位的采样时刻的时间戳。
-
revision (UInt32) — ClickHouse 服务器构建修订版。
-
trace_type (Enum8) — 跟踪类型:
Real 表示按挂钟时间收集堆栈跟踪。
CPU 表示按 CPU 时间收集堆栈跟踪。
当内存分配超过后续水印时,内存表示收集分配和解除分配。
MemorySample 表示收集随机分配和解除分配。 -
thread_number (UInt32) — 线程标识符。
-
query_id (String) — 查询标识符,可用于获取有关从 query_log 系统表运行的查询的详细信息。
-
trace (Array(UInt64)) — 采样时的堆栈跟踪。每个元素都是 ClickHouse 服务器进程内的一个虚拟内存地址。
:) select * from user_directories; ┌─name────────────┬─type────────────┬─params─────────────────────────────────────────┬─precedence─┐ │ users.xml │ users.xml │ {"path":"\/etc\/clickhouse-server\/users.xml"} │ 1 │ │ local directory │ local directory │ {"path":"\/ccdata\/clickhouse\/access\/"} │ 2 │ └─────────────────┴─────────────────┴────────────────────────────────────────────────┴────────────┘
:) select * from users\G Row 1: ────── name: default id: 94309d50-4f52-5250-31bd-74fecac179db storage: users.xml auth_type: plaintext_password auth_params: {} host_ip: ['::/0'] host_names: [] host_names_regexp: [] host_names_like: [] default_roles_all: 1 default_roles_list: [] default_roles_except: [] grantees_any: 1 grantees_list: [] grantees_except: []
-
name (String) — 用户名。
-
id (UUID) — 用户 ID。
-
storage (String) — 用户存储的路径。在 access_control_path 参数中配置。
-
auth_type (Enum8('no_password' = 0,'plaintext_password' = 1, 'sha256_password' = 2, 'double_sha1_password' = 3)) — 显示身份验证类型。对应着是:无密码、明文密码、SHA256编码密码、双SHA-1编码密码。
-
auth_params (String) — JSON 格式的身份验证参数,具体取决于 auth_type。
-
host_ip (Array(String)) — 允许连接到 ClickHouse 服务器的主机的 IP 地址。
-
host_names (Array(String)) — 允许连接到 ClickHouse 服务器的主机的名称。
-
host_names_regexp (Array(String)) — 允许连接到 ClickHouse 服务器的主机名的正则表达式。
-
host_names_like (Array(String)) — 允许连接到 ClickHouse 服务器的主机的名称,使用 LIKE 谓词设置。
-
default_roles_all (UInt8) — 显示默认情况下为用户设置的所有授予的角色。
-
default_roles_list (Array(String)) — 默认提供的授权角色列表。
-
default_roles_except (Array(String)) — 除列出的角色外,所有授予的角色都设置为默认角色。
:) select * from zookeeper where path='/clickhouse'; ┌─name───────┬─value─┬─czxid─┬─mzxid─┬───────────────ctime─┬───────────────mtime─┬─version─┬─cversion─┬─aversion─┬─ephemeralOwner─┬─dataLength─┬─numChildren─┬─pzxid─┬─path────────┐ │ tables │ │ 21595 │ 21595 │ 2021-06-23 14:09:44 │ 2021-06-23 14:09:44 │ 0 │ 3 │ 0 │ 0 │ 0 │ 3 │ 21613 │ /clickhouse │ │ task_queue │ │ 21550 │ 21550 │ 2021-06-23 13:50:24 │ 2021-06-23 13:50:24 │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 21551 │ /clickhouse │ └────────────┴───────┴───────┴───────┴─────────────────────┴─────────────────────┴─────────┴──────────┴──────────┴────────────────┴────────────┴─────────────┴───────┴─────────────┘
-
name (String) — 节点的名称。
-
path (String) — 节点的路径。
-
value (String) — 节点值。
-
dataLength (Int32) — 值的大小。
-
numChildren (Int32) — 后代数量。
-
czxid (Int64) — 创建节点的交易的 ID。
-
mzxid (Int64) — 最后更改节点的事务的 ID。
-
pzxid (Int64) — 最后删除或添加后代的事务的 ID。
-
ctime (DateTime) — 节点创建时间。
-
mtime (DateTime) — 上次修改节点的时间。
-
version (Int32) — 节点版本:节点更改的次数。
-
cversion (Int32) — 添加或删除的后代数量。
-
aversion (Int32) — ACL 的更改次数。
-
ephemeralOwner (Int64) — 对于临时节点,拥有此节点的会话的 ID。
总结
系统表提供了服务器的状态、进程以及环境,可以通过系统表获取到服务器的各种信息,关于user的相关的表,需要开启参数 access_management 来授权使用。