IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 系统运维系列 之Clickhouse查询优化问题记录整理 -> 正文阅读

[大数据]系统运维系列 之Clickhouse查询优化问题记录整理

ClickHouse 2016年开源的,由俄罗斯IT公司Yandex开发,是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS),而且查询性能优越。

主要特点:
面向列+向量执行;
自己管理存储(非Hadoop);
线性可扩展,高可靠(通过shard+replication实现);
DDL(数据定义语言):可以动态地创建、修改或者删除数据库、表和视图,而无需重启服务;
DML(数据操作语言):可以动态地查询、插入、修改或删除数据;
权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。

使用的场景:单表分析,这个表可以很宽。

不足:
update or delete支持较弱;
不擅长根据主键按行粒度进行查询(虽然支持),所以不应该把 ClickHouse 当做键值对数据库使用。
总原则:能够提前过滤,一定要提前过滤。

1 列裁剪与分区裁剪:
数据量太大时应避免使用 select * 操作,查询的性能会与查询的字段大小和数量成线性表换,字段越少,消耗的 io 资源越少,性能就会越高。

// 反例
select * from datasets.test;
// 正例
select test1,test2,test3,test4,test5 from datasets.test;

分区裁剪就是只读取需要的分区,在过滤条件中指定。

select test1,test2,test3,test4,test5 from datasets.test where test1='2022-03-23';

2 order by 结合 where、limit:
千万以上数据集进行 order by 查询时需要搭配 where 条件和 limit 语句一起使用。

// 正例
select test1,test2,test3,test4,test5 from datasets.test where test1='2022-03-23' order by test2 desc limit 1000;
// 反例
select test1,test2,test3,test4,test5 from datasets.test order by test2 desc;

3 避免构建虚拟列:
如非必须,不要在结果集上构建虚拟列,虚拟列非常消耗资源浪费性能,可以考虑在前端进行处理,或者在表中构造实际字段进行额外存储。

// 反例
select test1,test2,test1/test2 as result,test3,test4,test5 from datasets.test;
// 正例:拿到test1和test1后,考虑在前端进行处理,或者在表中构造实际字段进行额外存储
select test1,test2,test3,test4,test5 from datasets.test;

4 大小表 JOIN:
多表 join 时要满足小表在右的原则,右表关联时被加载到内存中与左表进行比较,ClickHouse 中无论是 Left join、Right join 还是 Inner join 永远都是拿着右表中的每一条记录到左表中查找该记录是否存在,所以右表必须是小表。

5 数据类型:
建表时能用数值型或日期时间型表示的字段,就不要用字符串——全String类型在以Hive为中心的数仓建设中常见,但CK环境不应受此影响。
虽然clickhouse底层将DateTime存储为时间戳Long类型,但不建议直接存储Long类型,因为DateTime不需要经过函数转换处理,执行效率高、可读性好。

参考资料:
https://wenku.baidu.com/view/8e23b03056270722192e453610661ed9ad51551c.html clickhouse踩坑记录
https://blog.csdn.net/clearlxj/article/details/121851727 ClickHouse-查询优化
https://blog.csdn.net/shouwantao3369/article/details/117674172 Clickhouse查询优化问题记录
https://blog.csdn.net/abcd1101/article/details/55225920 sql执行顺序以及on和where的区别
https://blog.csdn.net/weixin_32842959/article/details/113514220 mysql先where再join_sql(join on 和where的执行顺序)
https://segmentfault.com/a/1190000039719297 ClickHouse的入门、使用和优化
https://www.cnblogs.com/traditional/p/15218565.html ClickHouse 的基本介绍,什么是 ClickHouse?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:56:15  更:2022-04-28 11:58:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:21:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码