主页 > 其他  > 

【数据库维护】Clickhouse数据库维护关键系统表相关指标说明,支撑定位慢SQL及多实例场景下分析各实例运行

【数据库维护】Clickhouse数据库维护关键系统表相关指标说明,支撑定位慢SQL及多实例场景下分析各实例运行
背景

当前使用环境上以Docker容器化部署Clickhouse服务8个实例,但在实际运行过程中,发现8个实例内存负载不均衡,ck-0实例在固定时间段内存会直线上升,直至服务报错memory exceeded max memory limit。 为排查ck-0节点内存直线上升阶段,对应实例执行任务情况等,梳理clickhouse系统库相关表关键指标说明。

system系统库关键表说明

注意点:system系统库各表数据分别存储在各实例上,各实例情况统计须查询各实例具体情况。 即:节点一的运行指标/merge进程/insert进程/查询进程等,须登录实例一查看。

system.metrics表

记录当前实例运行过程各项关键指标数据,可以支撑分析问题发生情况下各指标趋势。 表字段说明

字段名称字段说明metric指标名称value指标值description指标说明name指标别名

关键指标说明

指标名称指标说明Query正在执行的查询数量Merge正在执行的merge数量TCPConnectionTCP连接数量HTTPConnectionHTTP连接数量PartsActive活跃的数据分块,小而多的数据库会对性能有影响AddressesActive正在连接的客户端IP地址数量 查询方式

查询所有可用指标

select * from system.metrics;

查询特定指标的值 如查询所有Connection相关的指标

select metric,value from system.metrics where metric like '%Connection%'; system.processes表

记录当前实例正在运行的查询/插入等操作,与show processlist 命令查询结果一致。 表关键字段说明

字段名称字段说明user执行本次操作的数据库用户address执行本次操作的客户端IP地址,IPV6格式,K8S场景下为实例IPelapsed操作耗时,秒read_rows读取行数read_bytes读取字节数written_rows读取行数written_bytes读取字节数memory_usage内存使用情况,字节query执行的具体脚本,insert脚本不包含数据部分is_cancelled是否取消查询is_all_data_sent所有数据是否已发送给客户端,可用于判断服务端查询是否已完成 查询方式

关注当前实例正在运行的查询个数,可通过count计数

select count(*) from system.processes;

关注当前实例内存占用情况,可用过sum求和

select count(*) as total_process,sum(memory_usage)/1024/1024 as total_memory_Mb from system.processes;

如通过上述命令得到某实例内存占用过大,可通过下面语句查询具体详情。

select memory_usage/1024/1024 as memory_Mb,elapsed,read_rows,written_rows,address,user,query from system.processes order by memory_usage desc;

说明:

除以1024,是进行单位转换,方便理解可以根据实际需求选择排序字段read_rows和written_rows两个字段,根据查询类型不同一般只有一个字段有值 system.merges

记录当前实例正在进行的merge合并操作,消耗内存的主要行为之一,将插入clcikhouse中的一个分区中的小片段数据根据系统配置阈值进行合并操作。 表关键字段说明

字段名称字段说明database数据库名称table表名elapsed耗时,秒progress进度,0-1之间num_parts需要被merge的数据分块数量result_part_name合并后的数据分块名称,对应磁盘上一个文件total_size_bytes_compressed压缩数据总大小rows_read读取行数bytes_read_uncompressed读取未压缩字节大小rows_written写入行数bytes_written_uncompressed写入未压缩字节大小memory_usage内存占用字节merge_type合并类型merge_algorithm合并算法 查询方式

查询当前实例正在执行的merge个数,可通过count(*)查询;查询当前实例正在运行的merge进程对应的内存消耗。

select count(*), sum(memory_usage)/1024/1024 as memory_Mb from system.merges;

查询具体merge进程详情(大于10秒的)

select database,tables,memory_usage/1024/1024 as memory_Mb,elapsed,num_parts,rows_read,rows_written from system.merges where elapsed > 10 order by memory_usage desc;

说明: 可根据实际关注点,参考字段说明,自行调整sql

system.query_log

记录当前实例已经运行过的SQL信息,SQL执行开始和结束均会写入一条记录,可以协助定位慢SQL等相关信息。 须注意数据保留周期。 表关键字段说明

字段名称字段说明type类型,包含QueryStart,QueryFinish,ExceptionBeforeStart,ExceptionWhileProcessing,一般情况下关注已执行成功记录。event_date开始日期,如20255-02-16event_time开始时间event_time_microseconds开始时间,带毫秒query_duration_ms执行耗时read_rows读取行数read_bytes读取字节数written_rows写入行数written_bytes写入字节数result_rows结果行数,read或者writtenresult_bytes结果字节数memory_usage内存占用情况query执行的脚本query_kind查询的类型databases数据库信息tables表信息partitions分区信息,尽量一次查询/写入操作同一个分区,效率会更高exception_code异常编码exception异常信息stack_trace堆栈信息is_initial_query是否初始化查询,对应其他initial字段user数据库用户address客户端地址,即谁发起的查询interfaceTCP/HTTP 查询方式

查询指定时间段内耗时大于10秒的记录

select event_time,query_duration_ms/1000 as duration_s,query_kind,result_rows,result_bytes/1024/1024 as result_Mb,memory_usage/1024/1024 as memory_usage_Mb,address,partitions,query,exception from system.query_log where query_duration_ms > 10000 order by memory_usage desc

说明: 具体查询字段,过滤字段以及排序字段,根据字段说明自行调整。

其他附录说明 多实例场景下批量查询方式 for number in 0 1 2 3 4 5 6 7;do echo "------------------"; ./clickhouse-client -h 实例IP或者K8S域名-$number --port 26734 -u clickhouse用户名 --password 用户名对应的密码 --query "select metric,value from system.metrics where metric like '%Connection%' "; echo "------------------"; done

说明:

in后面数字代表不同的实例编号,-h使用k8s域名如clickhouse-0.xxx ,可以通过$number获取变量,实现批量查询各个节点信息echo打印一堆横杠,以区分不同实例打印结果–query参数输入待执行的SQL脚本 K8s集群场景下,根据已查询到的客户端address确认具体的实例名称

K8s容器部署场景下,已获取address情况下,期望明确具体的发起查询的服务实例,可通过以下命令查询

kubectl get pod -A -o wide | grep 实例IP

-A可以根据实际情况修改为具体的命名空间,查询范围更具体一些,当前查询所有命名空间。

标签:

【数据库维护】Clickhouse数据库维护关键系统表相关指标说明,支撑定位慢SQL及多实例场景下分析各实例运行由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【数据库维护】Clickhouse数据库维护关键系统表相关指标说明,支撑定位慢SQL及多实例场景下分析各实例运行