【ClickHouse】深入浅出系列之常用系统表--排查问题利器

 ClickHouse官方内置了超详细的系统表,存储在system库中。系统表包含服务器的状态、进程以及环境,服务器的内部进程,方便我们进行数据分析和排查问题。在使用ClickHouse进行数据分析的过程中,可以利用这些系统表进行排查和解决问题,提高数据分析的效率和准确性。

system.clusters

 通过集群中任意一个节点获取所有的集群信息,验证集群搭建是否成功。获取集群中每个节点ip、副本、分片等信息。

select cluster,shard_num,replica_num, host_name, host_address,default_database from system.clusters

system.columns

类似于describe table命令,查询当前表对应的列信息。

SELECT name,type FROM system.columns

system.disks

查看配置当前节点所在服务器对应的数据存储路径、磁盘可用空间、磁盘容量等,对应配置文件中配置的信息。

SELECT * FROM system.disks

system.functions

查看Clickhouse自带的函数,写SQL查询时忘记了函数名字可以从此表中查询到

SELECT name FROM system.functions

system.merges

正在进行合并的信息,可查询此表判断合并数据的压力是否过大

SELECT count(1) FROM system.merges

system.mutations

包含所有ALERT语句的进度信息。可通过此表查询未alert成功的一些信息,如果有SQL执行卡住,可以执行 kill mutation id进行杀死当前SQL。

select * from system.mutations where id_done = 0

system.parts

可以查看所有的分区信息,遇到Too many parts的问题时可以查询此表,如果有不需要的parts可以先将其删除(永久删除,如果勿删会丢数据,谨慎执行)

SELECT * FROM system.parts

查询库表占用磁盘大小

SELECT
    database AS `本地库名`,
    table AS `本地表名`,
    sum(rows) AS `数据条数`,
    formatReadableSize(sum(bytes_on_disk)) AS `实际占用磁盘空间`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts
WHERE database like '%your_database%' OR table like '%your_table%'
GROUP BY database, table
ORDER BY sum(rows) desc;

system.processes

查看正在运行的所有SQL,包含每个SQL读取内存占用等信息,可判断查询压力是否过大

SELECT * FROM system.processes order by rows_read desc

 遇到大查询的时候可以手动将大查询杀死,从而缓解cpu的压力等。

KILL QUERY WHERE query_id=''

system.query_log

排查问题最重要的一张表,此表包含所有已执行过的sql的内存占用、执行时长、错误信息、执行完成情况等信息。遇到大查询的时候可以手动将大查询杀死,从而缓解cpu的压力等。

SELECT   
    event_time,   
    user,   
    query_id AS query,   
    read_rows,   
    read_bytes,   
    result_rows,   
    result_bytes,   
    memory_usage,   
    exception  
FROM clusterAllReplicas('cluster_name', system, query_log)  
ORDER BY event_time DESC  
LIMIT 100

system.replicas

查看clickhouse的副本信息,判断是否出现只读等情况。

SELECT * FROM system.replicas where is_readonly = 1

system.replication_queue

ReplicatedMergeTree类型的clickhouse集群中副本复制的队列,依赖于zookeeper或ck自己的keeper,此队列如果数据量持续很大说明有可能磁盘IO不够。

判断磁盘io能力命令,建议io大于30M/S,更利于大数据量的读写

dd if=/dev/zero of=/data/text.txt bs=10k count=10000 oflag=direct

如果获取更多clickhouse系统表信息可查看官网:System Tables | ClickHouse Docs

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

william.zhang(张)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值