暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse 实战笔记 第06期:ClickHouse 常用管理命令

悦专栏 2020-11-24
4314
作者简介
马听,多年 DBA 实战经验,对 MySQL、 Redis、ClickHouse 等数据库有一定了解,专栏《一线数据库工程师带你深入理解 MySQL》、《Redis 运维实战》作者。

这篇文章来总结下 CH 常用的管理语句。

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 databasetablepartitionname part_name, active, bytes_on_disk FROM system.parts where database not in 'system' ORDER BY databasetablepartitionname;

              2.2 查看库大小

              下面的 SQL 是查看库大小并排序:
                SELECT databasesum(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 / 1048576AS MEM_MB, result_rows AS RES_CNT,toDecimal32(result_bytes / 10485766AS RES_MB, read_rows AS R_CNT, round(read_bytes / 1048576AS R_MB, written_rows AS W_CNT, round(written_bytes / 1048576AS W_MB, query FROM system.query_log WHERE type2 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 databasetable, 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 及各百分位的查询执行时间,上面的举例语句执行结果如下:

                            专栏《ClickHouse 实战笔记》系列文章推荐
                            第01期:Kafka 数据同步到 ClickHouse
                            第02期:ClickTail+CH 实现 MySQL 慢查询实时展示
                            第03期:使用 Grafana 展示 ClickHouse 数据
                            第04期:ClickHouse 高可用集群搭建
                            第05期:ClickHouse 环形复制集群搭建

                            欢迎加入 ClickHouse 交流群,入群请添加下方群秘微信,备注“ClickHouse”,等待群秘邀你入群。



                            LIKECOLUMN

                            悦专栏


                            在这里,学好编程

                            做更优秀的 IT人!




                            文章转载自悦专栏,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论