ClickHouse之DBA运维宝典

最近有位网友与我聊天,他是一名 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源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移