ClickHouse性能测试

Stella981
• 阅读 752

对ClickHouse做个简单的性能测试。

ClickHouse简介

ClickHouse是战斗民族Yandex公司出品的OLAP开源数据库,简称CH,也有人简称CK,是目前市面上最快的OLAP数据库。性能远超Vertica、Sybase IQ等。

CH具有以下几个特点:

  1. 列式存储,因此数据压缩比高。

  2. 向量计算,且支持多核CPU并行计算,并且执行每个SQL时都力求榨干CPU性能。

  3. 基于Shared nothing架构,支持分布式方案。

  4. 支持主从复制架构。

  5. 兼容大部分SQL语法,其语法和MySQL尤其相近。

  6. 数据实时更新。

  7. 不支持事务,不适合高频更新数据。

  8. 建议多用宽表,但不建议总是查询整数据行中的所有列。

简言之,如果你有以下业务场景,可以考虑用CH:

  1. 海量数据,但又不希望单节点的存储空间消耗太高。

  2. 宽表,为了业务方便,可能会把很多相关数据列都整合到一个表里。

  3. 基于SQL的查询方式,提高程序的适用性和可移植性。

性能测试

我选用了CH官方提供的一个测试方案:SSBM (Star Schema Benchmark)。
测试机配置:

- 腾讯云CVM主机- 标准型S5机型- 4核16G- 外挂500G SSD云硬盘

数据盘采用xfs文件系统,ioscheduler采用deadline方式:

[root@yejr.me]# cat /etc/fstab/dev/vdb /data xfs defaults,noatime,nodiratime,nobarrier 0 0[root@yejr.me]# cat /sys/block/vdb/queue/scheduler[mq-deadline] kyber none

生成测试数据。

# 下载SSBM工具[root@yejr.me]# git clone https://github.com/vadimtk/ssb-dbgen.git[root@yejr.me]# cd ssb-dbgen[root@yejr.me]# make# 生成测试数据,机器性能和磁盘有限,所以指定 -s 100[root@yejr.me]# ./dbgen -s 100 -T c[root@yejr.me]# ./dbgen -s 100 -T p[root@yejr.me]# ./dbgen -s 100 -T s[root@yejr.me]# ./dbgen -s 100 -T l[root@yejr.me]# wc -l *tbl  3000000 customer.tbl  1400000 part.tbl   200000 supplier.tbl[root@yejr.me]# ls -l *tbl-rw-r--r-- 1 root root 331529327 Mar 28 21:17 customer.tbl-rw-r--r-- 1 root root 140642413 Mar 28 21:17 part.tbl-rw-r--r-- 1 root root  19462852 Mar 28 21:17 supplier.tbl

创建测试表,根据CH官网提供的建表DDL直接创建即可,参考这里:Star Schema Benchmarkhttps://clickhouse.tech/docs/en/getting\_started/example\_datasets/star\_schema/ )。

导入数据。

[root@yejr.me]# clickhouse-client --query "INSERT INTO customer FORMAT CSV" < customer.tbl[root@yejr.me]# clickhouse-client --query "INSERT INTO part FORMAT CSV" < part.tbl[root@yejr.me]# clickhouse-client --query "INSERT INTO supplier FORMAT CSV" < supplier.tbl[root@yejr.me]# clickhouse-client --query "INSERT INTO lineorder FORMAT CSV" < lineorder.tbl

这是导入测试数据的耗时以及导完后表空间大小的数据。

表数据量

耗时(秒)

tbl文件大小

表空间大小

customer

3,000,000

2.923

317M

116M

part

1,400,000

1.573

135M

25M

supplier

200,000

0.305

19M

7.7M

lineorder

600,037,902

837.288

67G

17G

lineorder_flat

600,037,902

2318.616

54G

只看最大的lineorder表,对tbl文件的压缩比可以达到4:1,如果是相对常规的OLTP数据库,其压缩比显然还要更高。

运行SSBM的几个标准查询耗时

SQL

耗时(秒)

扫描行数(10万)

返回行数

Q1.1

2.123

91.01

1

Q1.2

0.320

7.75

1

Q1.3

0.053

1.81

1

Q2.1

17.979

600.04

280

Q2.2

3.625

600.04

56

Q2.3

3.263

600.04

7

Q3.1

6.906

546.67

150

Q3.2

5.330

546.67

600

Q3.3

3.666

546.67

24

Q3.4

0.058

7.76

4

Q4.1

10.110

600.04

35

Q4.2

1.928

144.42

100

Q4.3

1.373

144.42

800

每次扫描这么多数据量,但这些统计分析为主的SQL查询耗时却并不大,足见CH的计算性能了。

今天先简单介绍到这里,以后有机会再继续分享。


由叶老师主讲的知数堂「MySQL优化课」第17期已发车,课程从第15期就升级成MySQL 8.0版本了,现在上车刚刚好,扫码开启MySQL 8.0的修行之旅吧。

ClickHouse性能测试


另外,叶老师在腾讯课堂的短课程《MySQL性能优化》已开课,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度

下面是报名小程序码

ClickHouse性能测试

点“在看”给我一朵小黄花 ClickHouse性能测试

ClickHouse性能测试

本文分享自微信公众号 - 老叶茶馆(iMySQL_WX)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Souleigh ✨ Souleigh ✨
2年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Stella981 Stella981
2年前
PB级数据实时分析,ClickHouse到底有多彪悍?
导语|ClickHouse是俄罗斯开源的OLAP数据库,以彪悍的性能著称。开源5年以来,以性能优异、简单易用的特点,吸引了大量的用户群体。本文是对腾讯云ClickHouse研发负责人彭健老师在云社区沙龙online的分享整理,帮助大家进一步理解ClickHouse的彪悍性能。_点击视频,查看完整直播回放_(https://www.oschina
Stella981 Stella981
2年前
ClickHouse在京东流量分析的应用实践
前言ClickHouse是一款开源列式存储的分析型数据库,相较业界OLAP数据库系统,其最核心优势就是极致的查询性能。它实现了向量化执行和SIMD指令,对内存中的列式数据,一个batch调用一次SIMD指令,大幅缩短了计算耗时,带来数倍的性能提升。目前国内社区火热,各大厂也纷纷进入该技术领域的探索。引言本文主要讨论京东黄
Stella981 Stella981
2年前
GreenPlum tidb 性能比较
主要的需求  针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用  数据可以实时的写入和查询,并发的tps不是很高建立数据仓库,模式上主要采用星星模型、雪花模型,或者宽表前端展示分为3类 saiku、granafa、c代码开发数据体量:事实表在35亿、维度表大的在500
Stella981 Stella981
2年前
Clickhouse v18编译记录
简介ClickHouse是“战斗民族”俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向OLAP的分布式列式DBMS,圈内人戏称为“喀秋莎数据库”。ClickHouse有一个简称"CK",与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:列式存
Stella981 Stella981
2年前
OLAP新秀ClickHouse性能测试
对ClickHouse做个简单的性能测试。ClickHouse简介ClickHouse是战斗民族Yandex公司出品的OLAP开源数据库,简称CH,也有人简称CK,是目前市面上最快的OLAP数据库。性能远超Vertica、SybaseIQ等。CH具有以下几个特点:1.列式存储,因此数据压缩比高。2.向量计算,且
京东云开发者 京东云开发者
10个月前
ClickHouse数据表迁移实战之-remote方式 | 京东云技术团队
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。我们内部很多的报表、数据看板都基于它进行开发。今天为大家带来remote方式的ClickHouse数据表迁移的完整过程介绍,如有错误,还请各位大佬指正。
京东云开发者 京东云开发者
4个月前
从ClickHouse通往MySQL的几条道路 | 京东物流技术团队
一、应用背景简介ClickHouse是Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快1001000倍。ClickHouse的性能超过了目前市场上可比的面向列的DBMS,每秒钟每台服务器每秒处