背景

其实早在去年我们就已经开始接触并研究clickhouse了,因为当时进行多表关联测试性能并不是特别优秀,所以并没有在线上大范围使用,当时研究的是分布式部署 (感觉分布式会比单机好一些)最后发现性能并不怎么样 而且分布式的sql也有很多限制,不支持单条删除和更新操作、不支持in和join(当时的版本,18.12.14之前),直到前几天看了携程一篇关于clickhouse的文章,将clickhouse的性能描述的神乎其神,再次勾起了我研究的欲望,附携程公众号文章 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用

测试

开始之前我们先看结果:

1

携程的case

clickhouse 版本:18.12.13

服务器配置:

参数 配置
CPU 40c
内存 128g
硬盘 SSD
虚拟内存 禁用

数据:

数据量
A 1000w
B 2000w
C 6000w
D 2.4亿

测试场景:

case 时间
A + B +C 三表关联聚合查询 190ms
B + D 关联聚合查询 390ms
A + B +D 三表关联聚合查询 640ms

根据携程给的一份查询统计数据来看他们基于clickhouse的分析需求90%在500ms内:

1

易企秀测试case

clickhouse 版本:18.12.13

服务器配置:

参数 配置
CPU 32c
内存 128g
硬盘 SSD
虚拟内存 禁用

数据:

数据量
A 4000w
B 1.3亿

测试场景:

case 时间
B 单表聚合排序 2s
B + D 关联聚合排序 11s

单表聚合:

多表关联聚合:

通过对比测试,在配置相当的情况下测试结果差距还是很大的,那么究竟是什么原因造成的呢?该如何进行优化...

过程再现

1

调参

网上有人说通过调大 max_memory_usage 与 max_bytes_before_external_group_by 的值可改善查询性能(主要是处理并发query或单次查询内存约束的)

SET max_memory_usage = 128000000000; #128G,SET max_memory_usage = 60000000000; #60G,

实际测试这种操作,性能并没有任何影响,但在16C 、68G、普通硬盘环境下的clickhouse调大这两个参数的值性能会有一倍提升。

2

优化建表语句

建表语句:

通过缩小分区数量性能略有提升,但不明显

3

优化SQL

JOIN操作时一定要把数据量小的表放在右边,ClickHouse中无论是Left Join 、Right Join还是Inner Join永远都是拿着右表中的每一条记录到左表中查找该记录是否存在,所以右表必须是小表。

4

优化engine

将普通的mergetree engin 改为特殊的memory engine,性能无任何变化。

memory engine:

5

io 排查

通过测试过程中对硬盘io的监控数据看,clickhouse在计算的过程中基本没有什么io操作,只是在最后一个阶段有1-2s的写io操作,这也侧面印证mergetree的强大。

那么问题来了 ,这些都没有明显改善,那携程的case是怎么快起来的呢?

初步怀疑携程case中的操作并没有使用到全表数据,应该在聚合前加了很多筛选条件,带着疑问邮件了上文的作者,结论如下:

邮件:

携程多表关联聚合的真实case:

6

我们调参后的case

秒查:

结论

1、使用SSD盘比普通盘性能会提升1倍
2、亿级别单表聚合排序最慢2s出结果,普通盘需4秒
3、多表关联需增加过滤条件,将聚合结果控制在千万级别内可秒出
4、join时大表在左小表在右
5、如果不想加where条件,那么可以提前构建大宽表或者预计算
6、按照我们业务量级上面服务器配置减半并不影响性能

其实clickhouse并不需要做什么优化,100个并发内单表分析可随意操作,体验极佳;多表分析需根据实际使用场景针对性优化

普通盘:

认为是对的 坚持下去 就是对的,认为是对的 不去坚持 最后可能就是错的

目前我们实时数仓除了使用clickhouse外,还在使用另外一个秒查引擎,亿级规模场景下分析,这个engine是真的秒查哦 SnappyData(https://www.jianshu.com/p/ccad1333c48d)

往期推荐

1、HBase最佳实践 | 聊聊HBase核心配置参数
2、Apache Hudi:剑指数据湖的增量处理框架
3、Hadoop社区比 Ozone 更重要的事情
4、MapReduce Shuffle 和 Spark Shuffle 结业篇

揭开 ClickHouse 快的面纱相关推荐

  1. 未来已来?揭开量子计算机的神秘面纱

    从第一台现代计算机ENIAC的诞生到个人PC时代的降临,从互联网概念的提出到移动互联的疾跑,在这个信息年代里,变革正以前所未有的速度改变着我们熟悉的世界.熟悉的生活. 作为个人,我们早已习惯于智能计算 ...

  2. 冰河浅析 - 揭开木马的神秘面纱(下)

    冰河浅析   -   揭开木马的神秘面纱(下)     作者:·   shotgun·yesky 四.破解篇(魔高一尺.道高一丈)         本文主要是探讨木马的基本原理,   木马的破解并非是 ...

  3. 揭开木马的神秘面纱 2

    揭开木马的神秘面纱zz 2 离冰河二的问世已经快一年了,大家对于木马这种远程控制软件也有了一定的认 识,比如:他会改注册表,他会监听端口等等,和一年前几乎没有人懂得木马是什么东   西相比,这是一个质 ...

  4. Azure Stack技术深入浅出系列6:Azure Stack一体机探究 — 揭开黑盒子的神秘面纱

    Azure Stack是微软公有云平台的延伸,为客户环境里提供接口和相关的功能.微软的Azure Stack安装在指定的合作伙伴的一体机中,并以一体机的形式部署到客户的混合云应用环境里的.2017年7 ...

  5. 揭开木马的神秘面纱 1

    揭开木马的神秘面纱 1 前言 在网上,大家最关心的事情之一就是木马:最近出了新的木马吗?木马究竟能实现 哪些功能?木马如何防治?木马究竟是如何工作的?本文试图以我国最著名的木马之  - 冰河为例,向大 ...

  6. 揭开木马的神秘面纱 一

    前言 在网上,大家最关心的事情之一就是木马:最近出了新的木马吗?木马究竟能实现哪些功能?木马如何防治?木马究竟是如何工作的?本文试图以我国最著名的木马之一 - 冰河为例,向大家剖析木马的基本原理,为大 ...

  7. 来,让我们一起揭开专利的神秘面纱

    众所周知,知识产权市场如今的火热程度就不用多说了,除了商标注册量的逐渐增多以外,其中专利的注册量也是在不断增加的!但很多人觉得专利很神秘,今天就带大家来揭开专利的神秘面纱! 发明创造不单指发明专利 以 ...

  8. 了解黑客的关键工具---揭开Shellcode的神秘面纱

    2019独角兽企业重金招聘Python工程师标准>>> ref:  http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开 ...

  9. EntityFramework Core表名原理解析,让我来,揭开你神秘的面纱

    上一节我们针对最开始抛出的异常只是进行了浅尝辄止的解析,是不是有点意犹未尽的感觉,是的,我也有这种感觉,看到这里相信您和我会有一些疑惑,要是我们接下来通过注解.Fluent APi.DbSet分别对表 ...

最新文章

  1. 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
  2. 淘商们用数据精细化分析客户群体
  3. python通过代理发送邮件_Python实现SMTP发送邮件详细教程
  4. TypeScript 里的 class field
  5. 公司注册资金100万欠债1千万,股东还100万,剩下的900万怎么办?
  6. 中山大学计算机是A类学科吗,中山大学a类学科有哪些?附中大a类学科名单
  7. JS格式化数字保留两位小数点—toFixed()
  8. linux网站权限一直自动关闭,奇妙伞-解决SELinux对网站目录权限控制的不当的问题--网上摘抄集合,记录使用...
  9. 我遇到的JPA中事务回滚的问题
  10. weblogic 部署应用步骤
  11. new一个对象的过程发生了什么
  12. MBI5020 16位恒流驱动芯片
  13. xml文件中空格输入
  14. Hyperledger Fabric之Explorer区块链浏览器
  15. Windows10关于拨号上网热点分享的操作
  16. 微信小程序项目设置并使用主题颜色
  17. 【RT-Thread Smart】ART-Pi Smart 开发板开箱及爱之初次体验
  18. 键盘鼠标是计算机标准输入输出设备,微型计算机输入输出设备之键盘和鼠标(ppt 32页).ppt...
  19. 本主题的评论还有不足之处,还望海涵
  20. mac虚拟机桌面图标隐藏_Win10 终极美化篇 | 高仿Mac ,这不是主题

热门文章

  1. 市场调研策划书_市场调查策划书
  2. 【云原生系列】第一讲:什么是云计算
  3. hp服务器pe系统安装win7系统安装系统安装失败,使用硬盘安装系统出现pGptRestore部署失败怎么解决?...
  4. 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验
  5. expected START_TAG or END_TAG not TEXT (position: TEXT seen
  6. 华为nova5iotg功能使用_在华为nova3中使用otg功能的具体步骤
  7. 游戏美术3D建模次世代制作流程图文详解
  8. 基于51单片机的AD转换
  9. ssh authentication魔鬼细节--.ssh文件夹权限
  10. 机器学习入门1--初识机器学习