最近有位网友与我聊天,他是一名 DBA,问我在 ClickHouse 中有没有一些能够 “安家立命” 的运维 SQL 语句。我想对于这个问题很多朋友都会有兴趣,所以就在这里做一个简单的分享。
在 ClickHouse 默认的 system 数据库下(databse),拥有众多的系统表。我们对 ClickHouse 运行状态的各种信息,就主要来自于这些系统表。
接下来就列举一些常用的运维 SQL 语句。
- 当前连接数
众所周知,CH 对外暴露的原生接口分为 TCP 和 HTTP 两类,通过 system.metrics 即可查询当前的 TCP、HTTP 与内部副本的连接数。
ch7.nauu.com :) SELECT * FROM system.metrics WHERE metric LIKE '%Connection';
- 当前正在执行的查询
通过 system.processes 可以查询目前正在执行的查询,例如:
ch7.nauu.com :) SELECT query_id, user, address, query FROM system.processes ORDER BY query_id;
可以看到,CH 目前正在执行两条语句,其中第 2 条是 INSERT 查询正在写入数据。
- 终止查询
通过 KILL QUERY 语句,可以终止正在执行的查询:
KILL QUERY WHERE query_id = 'query_id'
例如,终止刚才的 INSERT 查询 :
ch7.nauu.com :) KILL QUERY WHERE query_id='ff695827-dbf5-45ad-9858-a853946ea140';
众所周知,除了常规的 SELECT 和 INSERT 之外,在 ClickHouse 中还存在一类被称作 Mutation 的操作,也就是 **ALTER ** DELETE 和 **ALTER ** UPDATE。
对于 Mutation 操作, ClickHouse 专门提供了 system.mutations 用于查询,例如:
ch7.nauu.com :) SELECT database, table, mutation_id, command, create_time, is_done FROM system.mutations;
同样的,可以使用 KILL MUTATION 终止正在执行的 Mutation 操作:
KILL MUTATION WHERE mutation_id = 'mutation_id';
- 存储空间统计
查询 CH 各个存储路径的空间:
ch5.nauu.com :) SELECT name,path,formatReadableSize(free_space) AS free,formatReadableSize(total_space) AS total,formatReadableSize(keep_free_space) AS reserved FROM system.disks
各数据库占用空间统计
ch7.nauu.com :) SELECT database, formatReadableSize(sum(bytes_on_disk)) on_disk FROM system.parts GROUP BY database;
个列字段占用空间统计
每个列字段的压缩大小、压缩比率以及该列的每行数据大小的占比
SELECT
慢查询
SELECT
副本预警监控
通过下面的 SQL 语句对副本进行预警监控,其中各个预警的变量可以根据自身情况调整。
SELECT database, table, is_leader, total_replicas, active_replicas
好了,今天的分享就到这里。对于 CH 日常的运维 SQL 远不止这些,这里也只是抱砖引玉啦。
彩蛋:这次送6本书,转发文章的朋友才有资格抽奖,送给最需要的人😄,公众号回复:"抽奖",即可参与。
扫码关注我们
我知道你“在看”哟~
本文分享自微信公众号 - 小晨说数据(flink-spark)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。