专栏首页机器学习与系统性能提高15倍!只是把MySQL换成了ClickHouse

性能提高15倍!只是把MySQL换成了ClickHouse

简介

我们需要存储结构化时序数据,时间间隔为5分钟或1分钟,计算95峰值995峰值最值等指标,并且在网页中展示。

MySQL

项目开发初期,为了快速开发原型,验证产品,我们使用MySQL作为整个项目的存储。带来的问题是时序数据库范围分析查询耗时很长,计算30天的数据需要30s+,到了无法容忍的地步,即便是创建索引、使用BitInt存储时间戳,几乎没有性能提升。

后来我们组其他同事说换ClickHouse来存储时序数据,于是我们就开始了替换之旅。

ClickHouse

ClickHouse是面向OLAP(在线分析处理)、兼容SQL标准的列式数据库,主要的不足是不支持事务。因此我们目前没有把整个存储都迁移到ClickHouse上,而是只把时序数据存过来。

本以为替换过程会很麻烦,可能修改大量的代码和逻辑,实际上很快,因为之前接口的逻辑设计很合理,所以只替换了数据库ORM库,从gorm换成了sqlx,花了1天时间(前期重构逻辑花了1个星期我会乱说)。

更重要的是,ClickHouse提供了很多聚合函数,之前计算95值需要2次查询,而现在只需要一次查询就够了,对应的SQL如下:

select d.en_name, max(d.in_value) as peak_in,
    max(d.out_value) as peak_out, max(d.max_value) as peak_max,
    quantileExact(0.95)(d.out_value) as peak_95,
    quantileExact(0.995)(d.out_value) as peak_995,
    quantileExact(0.999)(d.out_value) as peak_999
from table_value d where d.record_time >= '2020-01-01 00:00:00' and d.record_time <= '2020-01-31 23:59:59'
group by d.en_name

经验证,ClickHouse是真的牛逼,30天内的查询耗时从30s降到2s内,提升了15倍!!!

下图是ClickHouse的测试结果,x轴表示查询的时间范围,最大12个月,最小1个月,共测试12次。可以看到大部分耗时在3s内

下图是MySQL存储中的测试结果(忽略标题),分别计算1、2、3个月范围的数据,共查询1次,耗时都在100s以上。

总结

ClickHouse之所以快主要是采用列式存储数据压缩,减少了数据扫描范围数据传输大小;其次,利用CPU的SIMD(Single Instruction Multiple Data)技术实现向量化执行引擎,可以通过一条CPU指令对一组数据执行相同的操作,实现空间上的并行。

需要说明的是,MySQL和ClickHouse各有优劣,要针对自己的业务需求、场景选择合适的数据库。本文涉及的业务比较适用于ClickHouse的强项,才会比MySQL快15倍。

本文分享自微信公众号 - 机器学习与系统(aimlsystem),作者:陆道峰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-12-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 查询提升 200 倍,ClickHouse 你值得拥有!

    来源:https://juejin.im/post/6863283398727860238

    Java技术栈
  • 一个比传统数据库快 100-1000 倍的数据库

    来源 | https://juejin.im/post/6863283398727860238

    程序猿DD
  • 一个比 MySQL 快 800 多倍的数据库...

    大家好呀!这里是爱学习的 Guide!今天给大家科普一个速度快到飞起的数据库——ClickHouse。

    Guide哥
  • 超快!大数据分析引擎ClickHouse

    ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。

    凹谷
  • 基于开源应用快速构建HTAP系统

    企业里随着数据量的增加,以及日趋复杂的分析性业务需求,主要适用于OLTP场景的MySQL压力越来越大。多年前还能免费试用的infobright社区版也早就销声匿...

    老叶茶馆
  • 1000倍!ClickHouse存储A股数据实践

    量化回测,苦于MySQL久矣,特别是进行股票日内因子构建分析或全市场因子测试的时候,每当按下回车时,MySQL就跟丢了魂一样,查询费时,大吞吐量读取也非常耗时。...

    量化投资与机器学习微信公众号
  • Clickhouse 适合作为MYSQL OLAP 解决方案吗 --大数据处理

    上期讲了 CLICKHOUSE 可以算是MYSQL生态闭环的一个关键的位置,OLAP的缺失让MYSQL 对比其他数据库,败的一塌糊涂。 CLICKHOUSE ...

    AustinDatabases
  • Clickhouse MYSQL的生态的闭环

    MYSQL 目前被攻击最多的就是他的OLAP的性能, 在OLTP中MYSQL 本身的性能是OK的,尤其高并发中符合MYSQL数据库的表设计和提取的方式,则数据的...

    AustinDatabases
  • 4万字长文 | ClickHouse基础&实践&调优全视角解析

    Clickhouse 是一个高性能且开源的数据库管理系统,主要用于在线分析处理 (OLAP) 业务。它采用列式存储结构,可使用 SQL 语句实时生成数据分析报告...

    王知无-import_bigdata
  • 看云上 ClickHouse 如何做计算存储分离

    12月6日-7日,由InfoQ 中国主办的综合性技术盛会QCon全球软件开发大会深圳站召开。QCon 内容源于实践并面向社区,演讲嘉宾依据热点话题,面向资深的技...

    腾讯云大数据
  • ClickHouse初识

    ClickHouse这些年还是比较火的一门技术,是Yandex在2016年6月15日开源的数据分析的数据库。在GitHub上有7000多的星。

    jeanron100
  • ClickHouse大数据领域企业级应用实践和探索总结

    2020年下半年在OLAP领域有一匹黑马以席卷之势进入大数据开发者的领域,它就是ClickHouse。在2019年小编也曾介绍过ClickHouse,大家可以参...

    王知无-import_bigdata
  • 为什么ClickHouse分析数据库这么强?(原理剖析+应用实践)

    2020年下半年在OLAP领域有一匹黑马以席卷之势进入大数据开发者的领域,它就是ClickHouse。在2019年小编也曾介绍过ClickHouse,大家可以参...

    PHP开发工程师
  • Clickhouse入门学习、单机、集群安装部署

    参考:https://blog.csdn.net/qq_37933018/article/details/108019566

    别先生
  • 干货 | StarRocks在携程大住宿智能数据平台的应用

    Wenjun,携程资深软件工程师,负责大住宿数据智能平台的研发与维护,对于大数据领域技术有浓厚兴趣。

    携程技术
  • 看云上 ClickHouse 如何做计算存储分离

    12月6日-7日,由InfoQ 中国主办的综合性技术盛会QCon全球软件开发大会深圳站召开。QCon 内容源于实践并面向社区,演讲嘉宾依据热点话题,面向资深的...

    腾讯QQ大数据
  • 从Druid到ClickHouse | eBay广告平台数据OLAP实战

    本文介绍eBay广告数据平台的基本情况,并对比分析了ClickHouse与Druid的使用特点。基于ClickHouse表现出的良好性能和扩展能力,本文介绍了如...

    Spark学习技巧
  • 战斗民族开源神器ClickHouse:一款适合于构建量化回测研究系统的高性能列式数据库(一)

    编辑部原创 编译:wally21st、 西西 未经允许,不得转载 对于一些私募、投资机构和个人来说,量化投资研究、回测离不开数据的支持。当数据量达到一定数量,如...

    量化投资与机器学习微信公众号
  • 数据分析引擎黑马 ClickHouse 最新技术的实践与应用

    ? 导语 | ClickHouse 在近几年是大数据分析引擎界的一匹黑马,从默默无闻到一路起飞,在 DB engine Rank 上进入前50名,成为全球数据...

    腾小云

扫码关注云+社区

领取腾讯云代金券