ClickHouse 常用管理命令

1 会话相关的管理语句

我们经常需要确定数据库当前正在执行的 SQL,CH 提供了一些系统表用于记录这些信息,具体用法如下:

1.1 获取活跃会话

SELECT query_id, user, address, elapsed, query   FROM system.processes ORDER BY query_id;

或者跟 MySQL 一样,执行:

SHOW PROCESSLIST;

 

1.2 kill 查询

如果某条 SQL 运行的太久了,影响到实例性能了,则可以与业务确定后,进行 kill 操作:

kill query where query_id='a410013e-f8f6-4ba7-a23a-48ae43535041';

 

1.3 获取 mutation 操作

CH 的 update 和 delete 操作,算 DDL 操作,CH 称为 mutation,而要确定 mutation 队列,可以使用下面的 SQL:

SELECT * FROM system.mutations;

 

1.4 kill mutation 操作

KILL MUTATION mutation_id = 'trx_id';

 

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

2.1 查看表所使用的空间

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;

2.2 查看库大小

下面的 SQL 是查看库大小并排序:

SELECT database, sum(bytes_on_disk) as db_size  FROM system.parts   GROUP BY database order by db_size desc;

3 性能相关

3.1 慢查询

可以在 users.xml 配置文件中设置 log_queries = 1 来开启慢查询记录。而需要定位到慢查询可以使用下面的 SQL:

SELECT  user, client_hostname AS host, client_name AS client,formatDateTime(query_start_time, '%T') AS started,query_duration_ms / 1000 AS sec, round(memory_usage / 1048576) AS MEM_MB, result_rows AS RES_CNT,toDecimal32(result_bytes / 1048576, 6) AS RES_MB, read_rows AS R_CNT, round(read_bytes / 1048576) AS R_MB, written_rows AS W_CNT, round(written_bytes / 1048576) AS W_MB, query FROM system.query_log WHERE type= 2 ORDER BY query_duration_ms DESC LIMIT 10

 

3.2 正在执行的 SQL 概要

正在执行的查询总次数、正在发生的合并操作总次数

select * from system.metrics limit 5;

 

3.3 累积 SQL 概要

查看服务运行过程总的查询次数、总的 select 次数

select * from system.events limit 5;

 

3.4 正在后台运行的概要信息

查看当前分配的内存、执行队列中的任务数量等

select * from system.asynchronous_metrics limit 5;

 

4 复制相关

检查复制是否异常:

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  OR active_replicas < total_replicas;

 

5 SQL 基准测试

ClickHouse 自带基准测试工具 clickhouse-benchmark,用法如下:

echo "select * from testcluster_shard_1.tc_shard_all;" |clickhouse-benchmark -i 5
-i 5 表示 SQL 执行 5 次

会显示 QPS、RPS 及各百分位的查询执行时间,上面的举例语句执行结果如下:

 

posted @ 2021-12-12 14:18  屠魔的少年  阅读(11)  评论(0)    收藏  举报