牛x!一个比传统数据库快 100-1000 倍的数据库
一、ClickHouse 是什么?ClickHouse:是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)
我们首先理清一些基础概念
- OLTP:是传统的关系型数据库 , 主要操作增删改查 , 强调事务一致性 , 比如银行系统、电商系统
- OLAP:是仓库型数据库 , 主要是读取数据 , 做复杂数据分析 , 侧重技术决策支持 , 提供直观简单的结果
文章插图
在列式数据库系统中(ClickHouse) , 数据按如下的顺序存储:
文章插图
两者在存储方式上对比:
文章插图
以上是ClickHouse基本介绍 , 更多可以查阅官方手册
二、业务问题业务端现有存储在Mysql中 , 5000万数据量的大表及两个辅表 , 单次联表查询开销在3min+ , 执行效率极低 。 经过索引优化、水平分表、逻辑优化 , 成效较低 , 因此决定借助ClickHouse来解决此问题最终通过优化 ,查询时间降低至1s内 , 查询效率提升200倍!希望通过本文 , 可以帮助大家快速掌握这一利器 , 并能在实践中少走弯路 。
三、ClickHouse实践1.Mac下的Clickhouse安装我是通过docker安装 , 查看教程 。 也可以下载CK编译安装 , 相对麻烦一些 。
2.数据迁移:从Mysql到ClickHouseClickHouse支持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.性能测试对比文章插图
4.数据同步方案临时表
文章插图
图片来源:携程 新建temp中间表 , 将Mysql数据全量同步到ClickHouse内temp表 , 再替换原ClickHouse中的表 , 适用数据量适度 , 增量和变量频繁的场景synch
文章插图
开源的同步软件推荐:synch 原理是通过Mysql的binlog日志 , 获取sql语句 , 再通过消息队列消费task
5.ClickHouse为什么快?
- 只需要读取要计算的列数据 , 而非行式的整行数据读取 , 降低IO cost
- 同列同类型 , 有十倍压缩提升 , 进一步降低IO
- clickhouse根据不同存储场景 , 做个性化搜索算法
文章插图
解决方案:LEFT JOIN B b ON toUInt32(h.id) = toUInt32(ec.post_id) , 中转一下 , 统一无符号类型关联
2.删除或更新是异步执行 , 只保证最终一致性查询CK手册发现 , 即便对数据一致性支持最好的Mergetree , 也只是保证最终一致性:
文章插图
如果对数据一致性要求较高 , 推荐大家做全量同步来解决
五、总结通过ClickHouse实践 , 完美的解决了Mysql查询瓶颈 , 20亿行以下数据量级查询 , 90%都可以在1s内给到结果 , 随着数据量增加 , ClickHouse同样也支持集群 , 大家如果感兴趣 , 可以积极尝试 : )
- 纠结|硬杠红米Note9Pro?iQOO Z1跌至1575,对比之后纠结了!
- 同比|亚马逊公布“剁手节”创纪录战绩:第三方卖家全球销售额超48亿美元 同比大增60%
- 车企|华为不造车!但任正非加了一个有效期,3年
- 芯片|华米GTS2mini和红米手表哪个好 参数功能配置对比
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 操盘|中兴统一操盘中兴、努比亚、红魔三大品牌
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 手机|iPhone12 Pro居然比mini还好卖?网友:24期免息起作用了!
- 不坑|库克不讲“性价比”!一台iPhone12至少赚4千,网友:不坑穷人