ClickHouse常用管理语句汇总:会话、磁盘、性能与复制管理

作为一款高性能列式存储数据库,ClickHouse在日常运维中离不开各类管理语句的支撑。本文将从会话管理、磁盘空间监控、性能排查、复制异常检测四个核心场景出发,整理ClickHouse常用管理语句,帮助运维与开发人员高效完成日常管理工作。

1. 会话相关管理语句

会话管理是保障ClickHouse实例稳定运行的基础,主要用于查看活跃查询、终止异常SQL及监控数据变更操作。

1.1 获取活跃会话

通过该语句可查看当前实例中所有正在执行的会话,包含查询ID、执行用户、客户端地址、执行时长等关键信息,功能类似MySQL的show processlist;

plsql 复制代码
select query_id, user, address, elapsed, query from system.processes order by query_id;

1.2 终止异常查询(kill查询)

当某条SQL执行耗时过长、占用资源过高并影响实例性能时,可与业务方确认后,通过查询ID终止该操作。

plsql 复制代码
kill query where query_id='a410013e-f8f6-4ba7-a23a-48ae43535041';

注:query_id需替换为实际要终止的查询ID,可通过"获取活跃会话"语句查询获得。

1.3 mutation操作管理

ClickHouse中没有传统的updatedelete,这类数据变更操作被称为mutation(属于DDL操作)。通过该语句可查看mutation队列状态,判断数据变更是否完成。

plsql 复制代码
SELECT * FROM system.mutations;

关键字段说明:

  • is_done:突变操作完成标志,1表示已完成,0表示正在执行中。

2. 磁盘空间相关管理语句

磁盘空间监控可帮助及时清理冗余数据,避免因空间不足导致实例异常,主要包含表级和库级空间查询。

2.1 查看表所使用的空间

该语句可按数据库、表、分区维度,查看每个数据分片的磁盘占用情况,便于定位大表或大分区。

plsql 复制代码
select database, table, partition, name part_name, active, bytes_on_disk 
from system.parts 
where database not in 'system' 
order by database, table, partition, name;

关键字段说明:

  • bytes_on_disk:该分片在磁盘上的实际占用大小;
  • active:分片是否处于活跃状态(非活跃分片可后续清理)。

2.2 查看数据库大小

按数据库维度统计总磁盘占用,快速定位占用空间最大的数据库,优先进行空间优化。

plsql 复制代码
select database, sum(bytes_on_disk) as db_size 
from system.parts 
group by database 
order by db_size desc;

3. 性能相关管理语句

性能排查是日常运维的核心场景,通过以下语句可定位慢查询、统计SQL执行情况及监控后台资源使用。

3.1 查找慢查询

可筛选出最近执行完成的最慢10条SQL,按执行开始时间倒序排列,帮助分析性能瓶颈。

plsql 复制代码
SELECT * FROM system.query_log 
WHERE type = 'QueryFinish' 
ORDER BY query_start_time DESC 
LIMIT 10 FORMAT Vertical;

注:FORMAT Vertical表示按垂直格式输出,便于查看长SQL语句详情。

3.2 SQL执行统计

分为"实时执行统计"和"累积执行统计"两类,满足不同监控需求:

  • 实时执行统计(system.metrics):查看当前实例的实时状态,如正在执行的查询次数、合并操作次数等。

    plsql 复制代码
    select * from system.metrics limit 5;
  • 累积执行统计(system.events) :查看实例运行以来的累积指标,如总查询次数、总select语句执行次数等。

    plsql 复制代码
    select * from system.events limit 5;

3.3 后台运行概要信息

查看实例当前的内存分配、执行队列任务数量等后台资源使用情况,及时发现资源过载风险。

plsql 复制代码
select * from system.asynchronous_metrics limit 5;

4. 其他核心管理语句

除上述场景外,复制异常检测和SQL基准测试也是常用运维操作,保障ClickHouse集群稳定性与性能验证。

4.1 检查复制异常

针对ClickHouse副本集群,该语句可筛选出存在复制异常的表,如只读副本、队列任务过多、副本数量不足等情况。

plsql 复制代码
SELECT database, table, is_leader, total_replicas, active_replicas 
FROM system.replicas  
WHERE is_readonly  -- 副本只读
   OR is_session_expired  -- 会话过期
   OR future_parts > 20  -- 未来分片数过多
   OR parts_to_check > 10  -- 待检查分片数过多
   OR queue_size > 20  -- 队列大小超限
   OR inserts_in_queue > 10  -- 插入队列超限
   OR log_max_index - log_pointer > 10  -- 日志同步滞后
   OR total_replicas < 2  -- 总副本数不足2个
   OR active_replicas < total_replicas;  -- 活跃副本数少于总副本数

4.2 SQL基准测试

ClickHouse自带clickhouse-benchmark工具,可对SQL语句进行性能测试,输出QPS、RPS及各百分位执行时间。

bash 复制代码
echo "select * from martin.t3;" | clickhouse-benchmark -i 5

参数说明:

  • -i 5:表示该SQL语句执行5次,可根据需求调整执行次数;
  • 测试结果包含"RPS""95%查询耗时""QPS"等关键指标,用于性能对比或优化验证。

更多工具用法可参考官方文档:https://clickhouse.com/docs/en/operations/utilities/clickhouse-benchmark

总结

本文整理的ClickHouse管理语句覆盖了会话、磁盘、性能、复制四大核心运维场景,可直接应用于日常实例监控、问题排查与性能优化。实际使用时,可根据具体需求调整SQL筛选条件(如增加时间范围、指定数据库),也可结合可视化工具将关键指标集成到监控面板,提升运维效率。

相关推荐
游戏开发爱好者82 小时前
2025年iOS应用上架App Store全指南,开发者必看
android·ios·小程序·https·uni-app·iphone·webview
a3158238062 小时前
Android CardView修改背景阴影
android·cardview·修改背景
kk哥88993 小时前
Android UI 优化指南:流畅度与体验双提升
android·ui
摘星编程4 小时前
Flutter for OpenHarmony 实战:SliverList 滑动列表详解
android·javascript·flutter
abbiz4 小时前
30 个 Android 面试高频问题及答案
android·面试·职场和发展
冬奇Lab4 小时前
【Kotlin系列04】类与对象基础:从Java Bean到Data Class的优雅蜕变
android·kotlin·编程语言
笔夏4 小时前
【安卓学习之webRTC】学习相关资料
android·学习·webrtc
_李小白4 小时前
【Android 美颜相机】第三天:初识GPUImageView
android·数码相机
行稳方能走远4 小时前
Android java 学习笔记3
android·java