一、ClickHouse 是什么?

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

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

  • OLTP:是传统的关系型数据库,主要操作增删改查,强调事务一致性,比如银行系统、电商系统
  • OLAP:是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,提供直观简单的结果
    接着我们用图示,来理解一下列式数据库和行式数据库区别

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

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

两者在存储方式上对比:

以上是ClickHouse基本介绍,更多可以查阅官方手册

二、业务问题

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

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

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

三、ClickHouse实践

1.Mac下的Clickhouse安装
我是通过docker安装,查看教程。也可以下载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 原理是通过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同样也支持集群,大家如果感兴趣,可以积极尝试 : )

来源:juejin.im/post/6863283398727860238

欢迎关注我的微信公众号「码农突围」,分享Python、Java、大数据、机器学习、人工智能等技术,关注码农技术提升•职场突围•思维跃迁,20万+码农成长充电第一站,陪有梦想的你一起成长

牛x!一个比传统数据库快 100-1000 倍的数据库!相关推荐

  1. 光量子计算机概念股,我国量子计算机比谷歌快100万倍 量子计算机概念股龙头一览...

    重大突破!我国量子计算机比谷歌快100万倍,量子计算机能解决传统计算机无法解决的复杂难题,展现量子优越性.中国科学技术大学常务副校长.中国科学院院士.西湖大学创校校董潘建伟教授9月5日在西湖大学首场公 ...

  2. 外媒中国量子计算机,比美国快100亿倍,中国量子计算机赢得霸权!外媒致敬

    据新华社12月4日报道,中国科学技术大学潘建伟.陆朝阳等组成的研究团队与国内合作,构建了76个光子的量子计算原型机"九章",实现了具有实用前景的"高斯玻色取样" ...

  3. 谷歌的量子计算机速度,谷歌称其量子计算机速度比传统计算机快1亿倍

    腾讯科技讯 12月11日,据科技网站ArsTechnica报道,微博)和NASA联合研发的D-Wave 2X量子计算机在测试中运行速度达到了传统芯片的1亿倍. 量子计算机,顾名思义,就是实现量子计算的 ...

  4. LiFi比WiFi快100倍:它如何运作,实际应用靠谱吗

    Wi-Fi对移动计算的使用产生了巨大的影响,使员工可以在任何地方访问公司网络,咖啡店也能成为独立工作人员的办公地点. 但Wi-Fi也有其缺点,所以诞生了一个新的标准:Li-Fi,如果它可以顺利上市,将 ...

  5. 碾压谷歌量子霸权!中国量子计算原型机 九章 问世,比超级计算机快百万亿倍...

    量子优越性实验并不是一个一蹴而就的工作. " 作者 | 李帅飞 在量子计算领域,我国再次实现了里程碑式的重大突破! 12 月 4 日,中国科学技术大学宣布,该校中国科学技术大学潘建伟.陆朝阳 ...

  6. 数据库与python的关系_数据库 引用关系

    <深入解析sas:数据处理.分析优化与商业应用>一2.4 访问关系型数据库系统中的数据 本节书摘来自华章出版社<深入解析sas:数据处理.分析优化与商业应用>一书中的第2章,第 ...

  7. 下一代5G网络:比4G快1000倍 普及至少需8年

    互联网时代,上网在居民日常生活中已是不可分割的一部分.但是看电影,听音乐,加载游戏,甚至开网页总是"正在缓冲"中,这让很多网友叫苦不迭,于是我们总会听到各种无奈的吐槽:我等到花都谢 ...

  8. 比MySQL小的数据库_牛x!一个比传统数据库快 100-1000 倍的数据库!

    原标题:牛x!一个比传统数据库快 100-1000 倍的数据库! 一.ClickHouse 是什么? 二.业务问题 三.ClickHouse实践 四.遇到的坑 五.总结 一.ClickHouse 是什 ...

  9. 一个比 ClickHouse 还快的开源数据库

    开源分析数据库 ClickHouse 以快著称,真的如此吗?我们通过对比测试来验证一下. ClickHouse vs Oracle 先用 ClickHouse(简称 CH).Oracle 数据库(简称 ...

  10. mysql数据库索引页号为什么从3开始_MySQL数据库快问快答

    原标题:MySQL数据库快问快答 前言 今天楼主给大家列一下关于数据库几个常见问题的要点,如果大家对其中的问题感兴趣,可以自行扩展研究. 1. UNION ALL 与 UNION 的区别 UNION和 ...

最新文章

  1. 2020-08-20如何获取AWS的Access Key ID 和 Secret Access Key (Unable to find credentials)
  2. EXP-00091错误的说明和解决方法
  3. Activiti最全入门教程
  4. html中加盒子,在HTML中各类型盒子的基线应如何确定
  5. FutureTask源码
  6. 在 Visual Studio 2010 中创建 ASP.Net Web Service
  7. 『性能测试』文章大汇总
  8. python小技巧积累--题库(持续更新)
  9. retrofit框架学习(一)----基本用法
  10. 餐厅收费服务器密码修改,餐厅消费管理系统-会所一卡通管理系统
  11. 学术论文投稿与返修(Rebuttal)经验分享
  12. 解决frp内网穿透vsftpd报227错误
  13. android获取uid,Android获得UID的办法
  14. 日语 假名对应的汉字来源
  15. 云之讯张雯:云计算时代融合通讯开发及算法优化
  16. 管理SQL Server AlwaysOn(5)——常规监控(1)——常规监控
  17. 微信小程序波浪动态效果和背景色渐变(使用动态图,有手就行,但是流动速度固定波浪数目也固定)
  18. flutter 登录和退出登录_Flutter从入门到奔溃(一):撸一个登录界面
  19. LeetCode基础
  20. 嵌入式相关问题记录concerto.mak

热门文章

  1. iis 中php的mime类型,IIS添加MIME扩展类型及常用的MIME类型列表
  2. 前端一键复制粘贴插件——clipboard.js的使用
  3. 论文笔记_S2D.06-2018-BMVC-用于实时语义分割的轻量级精细网络RefineNet
  4. 小Q正在给一条长度为n的道路设计路灯安置方案。 为了让问题更简单,小Q把道路视为n个方格,需要照亮的地方用'.'表示, 不需要照亮的障碍物格子用'X'表示。
  5. 设计模式-适配器模式(Adapter)
  6. UVa 10900 - So you want to be a 2n-aire?(期望DP)
  7. Spring Cloud各个组件的配套使用
  8. 【夯实PHP基础】PHP发送邮件(PHPMailer)
  9. 20、淘宝技术这十年
  10. 一个简单的C#委托小例子