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

一、ClickHouse 是什么?

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

我们首先理清一些基础概念

  • OLTP:是传统的关系型数据库,主要操作增删改查,强调事务一致性,比如银行系统、电商系统

  • OLAP:是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,提供直观简单的结果

接着我们用图示,来理解一下 列式数据库行式数据库 区别

在传统的行式数据库系统中(MySQL、Postgres和MS SQL Server),数据按如下顺序存储:


在列式数据库系统中(ClickHouse),数据按如下的顺序存储:

两者在存储方式上对比:

以上是ClickHouse基本介绍,更多可以查阅

官方手册: https://clickhouse.tech/docs/zh/

二、业务问题

业务端现有存储在Mysql中,5000万数据量的大表及两个辅表,单次联表查询开销在3min+,执行效率极低。经过索引优化、水平分表、逻辑优化,成效较低,因此决定借助ClickHouse来解决此问题

最终通过优化, 查询时间降低至1s内,查询效率提升200倍!

希望通过本文,可以帮助大家快速掌握这一利器,并能在实践中少走弯路。

三、ClickHouse实践

1.Mac下的Clickhouse安装

我是通过docker安装:

查看教程:https://blog.csdn.net/qq_24993831/article/details/103715194

也可以下载CK编译安装,相对麻烦一些。

2.数据迁移:从Mysql到ClickHouse

ClickHouse支持Mysql大多数语法,迁移成本低,目前有  五种迁移 方案:

  • create table engin mysql,映射方案数据还是在Mysql

  • insert into select from,先建表,在导入

  • create table as select from,建表同时导入

  • csv离线导入

  • streamsets

选择第三种方案做数据迁移:

CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = Mergetree AS SELECT *
FROM mysql('host:port', 'db', 'database', 'user', 'password')
3.性能测试对比
类型 数据量 表大小 查询速度
Mysql 5000万 10G 205s
ClickHouse 5000万 600MB 1s内
4.数据同步方案

临时表

新建temp中间表,将Mysql数据全量同步到ClickHouse内temp表,再替换原ClickHouse中的表,适用数据量适度,增量和变量频繁的场景

synch

开源的同步软件推荐:

synch: https://github.com/long2ice/synch/blob/dev/README-zh.md

原理是通过Mysql的binlog日志,获取sql语句,再通过消息队列消费task

5.ClickHouse为什么快?
  • 只需要读取要计算的列数据,而非行式的整行数据读取,降低IO cost

  • 同列同类型,有十倍压缩提升,进一步降低IO

  • clickhouse根据不同存储场景,做个性化搜索算法

四、遇到的坑

1.ClickHouse与mysql数据类型差异性

用Mysql的语句查询,发现报错:

解决方案 :LEFT JOIN B b ON toUInt32(h.id) =
toUInt32(ec.post_id),中转一下,统一无符号类型关联

2.删除或更新是异步执行,只保证最终一致性

查询CK手册发现,即便对数据一致性支持最好的Mergetree,也只是保证最终一致性:


如果对数据一致性要求较高,推荐大家做全量同步来解决

五、总结

通过ClickHouse实践,完美的解决了Mysql查询瓶颈,20亿行以下数据量级查询,90%都可以在1s内给到结果,随着数据量增加,ClickHouse同样也支持集群,大家如果感兴趣,可以积极尝试

参考资料:

  • ClickHouse官方手册

    • https://clickhouse.tech/docs/zh/)

  • ClickHouse在携程酒店应用

    • https://cloud.tencent.com/developer/article/1462633

  • ClickHouse引擎怎么选

    • https://developer.aliyun.com/article/762461

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

长按订阅更多精彩▼如有收获,点个在看,诚挚感谢

查询提升200倍,ClickHouse你值得拥有!相关推荐

  1. clickhouse 查询优化_查询提升200倍,ClickHouse你值得拥有!

    一.ClickHouse 是什么? ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 我们首先理清一些基础概念 OLTP:是传统的关系型数据库,主要操作增删改查,强 ...

  2. 握草!查询提升200倍,它难道想干掉传统数据库?

    ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍. ClickHouse 的性能超过了目 ...

  3. 查询速度提升200倍,ClickHouse到底有多快?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取个gui 来源:r6a.cn/a8UZ ClickHouse 是 Yande ...

  4. 查询增速200倍!看金融业数据库架构如何在蜕变中逆袭

    来自:DBAplus社群 作者介绍 姜伟锋,美利金融融资财务团队JAVA后端技术专家,曾从事于互联网金融P2P.第三方支付相关交易.支付.清结算.账务平台系统相关架构设计.研发工作,目前从事于财务项目 ...

  5. GEMM性能提升200倍,AutoKernel算子优化工具正式开源

    作者 | OPEN AI LAB 研究员 吕春莹 出品 | AI科技大本营 头图 | CSDN下载自视觉中国 随着AI技术的快速发展,深度学习在各个领域得到了广泛应用.深度学习模型能否成功在终端落地应 ...

  6. Python3:只用一个装饰器,就让python的运行速度提升200倍!!

    让python运行速度更快 1.引言 2.Numba 2.1 简介 2.2 安装 2.3 代码实例 3. 代码实战 3.1 不使用Numba 3.2 使用Numba 4.总结 1.引言 小屌丝:鱼哥, ...

  7. clickhouse 查询优化_如何提升查询速度?试试ClickHouse

    一.ClickHouse 是什么?ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS) 我们首先理清一些基础概念OLTP:是传统的关系型数据库,主要操作增删改查,强调事 ...

  8. 腾讯云三大自研数据库之一 TBase 开源后首次重磅升级,复杂查询性能最高提升十倍

    7月13日,腾讯云自研分布式HTAP数据库TBase正式发布最新开源版本.这款被欧洲航天局作为" Gaia Mission"行星探索项目的核心数据库,迎来了自开源以来的重磅升级.该 ...

  9. TBase数据库开源后重磅升级,复杂查询性能最高提升十倍

    这款被欧洲航天局作为" Gaia Mission"行星探索项目的核心数据库,迎来了自开源以来的重磅升级.7月13日,腾讯云自研分布式HTAP数据库TBase正式发布最新开源版本,该 ...

最新文章

  1. 第一章1.1 回顾CMOS的一些知识
  2. Android和SQLite版本对应关系
  3. ubuntu android2.3 emulator,Android Studio 2.3 Ubuntu 16.10 emulator do not start
  4. c++TCP的三次握手和四次挥手
  5. matlab 线性拟合polyfit_从零开始的matlab学习笔记——(24)曲线拟合
  6. C++ 求一元二次方程的根
  7. 对XML文件进行的添加、删除、修改、查询操作。
  8. JAVA如何插入MySql的datetime类型
  9. Lucene入门与使用(一) [转]
  10. React.js小书结合官方文档第一部分笔记
  11. C#实现文本语音播放
  12. STM32之DS1682
  13. python dbf 修改_Python修改DBF文件指定列
  14. 笔记本电脑把BlackBerry当modem上网
  15. 服务器常见的异常问题的解决方法
  16. Flask06_ORM多表
  17. JSP和Servlet是什么关系,JSP工作原理?
  18. python-长宽不同多张图片生成一列长图
  19. 《Adobe Illustrator CS5中文版经典教程》—第0课0.15节创建和编辑渐变
  20. videojs中文文档详解_HTTP的世界观(附HTTP/3中文翻译)

热门文章

  1. 下一代图片压缩格式 AVIF怎么样?
  2. python网络通信的几种方式_两种方式,java=python,使用py4j进行通信
  3. AM335X的汇编语言与c语言,X86汇编语言学习手记 -- 汇编和C协同
  4. 线段树分裂与合并 ----- P2824 [HEOI2016/TJOI2016]排序 [线段树分裂合并 OR 01序列排序+二分线段树]
  5. 【数学专题】组合数学与计数
  6. 模板 - 最小斯坦纳树
  7. 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大(威海)c语言实验报告册答案...
  8. 测试报告-1.1组成和要点
  9. 用oracle存储过程取一张表里的数据放入其他表 游标取值
  10. DbUtils工具类使用