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

Clickhouse入门

IT那活儿 2024-05-27
170
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!! 



安装部署



1.1 拉取镜像

docker pull yandex/clickhouse-server:21.3.20.1
1.2 启动容器
docker run --rm -d --name=clickhouse-server \
--ulimit nofile=262144:262144 \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
yandex/clickhouse-server:21.3.20.1

1.3 进入容器,登陆clickhouse
docker exec -it da07c054ce26 bash
clickhouse-client
show databases  默认带2个数据库(systemdefault

1.4 客户端连接
通过DBeaver工具连接,配置DBeaver。




引擎介绍



表引擎是 ClickHouse 服务的核心,它们主要是解决以下问题:

  • 数据的存储方式和位置;
  • 支持哪些查询操作以及如何支持;
  • 数据的并发访问;
  • 数据索引的使用;
  • 是否可以支持多线程请求;
  • 是否可以支持数据复制。
如图所示,clickhouse创建表是可以选择的不同种类的引擎。
根据不同场景,主要有4类引擎:Log系列引擎、MergeTree系列表引擎、外部存储引擎、内存类型引擎。
1)Log系列引擎
  • TinyLog 表引擎
  • StripeLog 表引擎
  • Log 表引擎
2)MergeTree系列表引擎
  • MergeTree引擎

  • ReplicatedMergeTree引擎

  • ReplacingMergeTree引擎

  • ummingMergeTree引擎

  • AggregatingMergeTree引擎

  • CollapsingMergeTree引擎

3)外部存储引擎
  • HDFS 表引擎

  • MySQL 表引擎

  • JDBC 表引擎

  • Kafka 表引擎

  • File 表引擎

4)内存类型引擎
  • Memory

  • Set

  • Buffer



常用SQL



3.1 当前连接数

SELECT * FROM system.metrics WHERE metric LIKE '%Connection';
3.2 当前正在执行的查询
SELECT query_id, user, address, query  FROM system.processes ORDER BY 1;
3.3 kill指定会话
其中query_id就来自上面的查询
kill query where query_id='xxxx';
3.4 查询 CH 各个存储路径的空间
SELECT name,path,formatReadableSize(free_space) AS 
free,formatReadableSize(total_space) AS 
total,formatReadableSize(keep_free_space) AS reserved FROM system.disks

3.5 各数据库占用空间统计
SELECT database, formatReadableSize(sum(bytes_on_disk)) 
on_disk FROM system.parts GROUP BY database;

3.6 个列字段占用空间统计
SELECT database,table, column, any(type), 
    sum(column_data_compressed_bytes) AS compressed,
    sum(column_data_uncompressed_bytes) AS uncompressed,
    round(uncompressed compressed, 2) AS ratio,
    compressed / sum(rows) AS bpr,
    sum(rows) FROM system.parts_columns
WHERE active
-- AND database != 'system'
GROUP BY   database, table, column
ORDER BY database ASC, table ASC, column ASC

3.7 查看库表资源占用情况
SELECT database, table, sum(rows) 
AS "总行数", formatReadableSize(sum(data_uncompressed_bytes))
as "原始大小", formatReadableSize(sum(data_compressed_bytes))
AS "压缩大小", round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100.,2)
AS "压缩率/%"  FROM system.parts group by database,table  order by database;

3.8 慢查询
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,
result_bytes / 1048576 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.9 表各字段压缩前后对比
SELECT table,
formatReadableSize(sum(data_compressed_bytes)) AS tc,
formatReadableSize(sum(data_uncompressed_bytes)) AS tu,
round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100,2) AS ratio
FROM system.columns
WHERE database = 'system' and table = 'metric_log'
GROUP BY table ORDER BY sum(data_compressed_bytes) ASC

3.10 查询分区
SELECT database,table,partition,partition_id,name,path FROM 
system.parts
WHERE table = 'metric_log';


END


本文作者:韦宝军(上海新炬中北团队)

本文来源:“IT那活儿”公众号

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

评论