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';