ClickHouse自带用于记录系统信息的系统库system,通过processes表,我们可以查看当前连接的进程信息,也就是正在运行的sql的信息。
SELECT
query_id,
read_rows,
total_rows_approx,
memory_usage,
initial_user,
initial_address,
elapsed,
query,
client_hostname
FROM system.processes;
# 字段含义
# query_id 查询id,
# read_rows 从表中读取的行数,
# total_rows_approx 应读取的行总数的近似值,
# memory_usage 请求使用的内存量
# initial_user 进行查询的用户
# initial_address 请求的 IP 地址
# elapsed 求执行开始以来的秒数
# query 查询语句
可以使用client_hostname连接。
通过sql语句的查询行数和查询已经执行的时间来判断sql是不是在慢查询,或者是同事在查询的时候没有日期限定而直接查全表。一般的话如果grafana监控的CK节点出现cpu飙升的情况,就需要我们去判断CK中是否有垃圾sql在执行,根据query_id杀死该进程。
kill query where query_id='83432bc8-5e1b-4833-a3ec-2659751e5ca1';