OLAP新秀ClickHouse性能测试「建议收藏」

OLAP新秀ClickHouse性能测试「建议收藏」对ClickHouse做个简单的性能测试。 ClickHouse简介 ClickHouse是战斗民族Yandex公司出品的OLAP开源数据库,简称CH,也有人简称CK,是目前市面上最快的OLAP数据…

OLAP新秀ClickHouse性能测试

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云硬盘

代码100分

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

代码100分[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 Benchmark https://clickhouse.tech/docs/en/getting_started/example_datasets/star_schema/ )。

导入数据。

代码100分[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文件大小表空间大小customer3,000,0002.923317M116Mpart1,400,0001.573135M25Msupplier200,0000.30519M7.7Mlineorder600,037,902837.28867G17Glineorder_flat600,037,9022318.616

54G

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

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

SQL耗时(秒)扫描行数(10万)返回行数Q1.12.12391.011Q1.20.3207.751Q1.30.0531.811Q2.117.979600.04280Q2.23.625600.0456Q2.33.263600.047Q3.16.906546.67150Q3.25.330546.67600Q3.33.666546.6724Q3.40.0587.764Q4.110.110600.0435Q4.21.928144.42100Q4.31.373144.42800

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

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

全文完

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8719.html

(0)
上一篇 2023-02-23
下一篇 2023-02-23

相关推荐

  • Python中的String isnumeric方法的使用

    Python中的String isnumeric方法的使用Python中的字符串提供了很多内置方法,其中一个方法叫做isnumeric,它可以用于判断字符串是否只由数字字符组成。

    2024-03-26
    74
  • MySQL实现备份案例(2)[通俗易懂]

    MySQL实现备份案例(2)[通俗易懂]案例1:MySQL8.0实现数据库冷备份和还原 10.0.0.10 — MySQL8.0 #停止数据库 [root@CentOS8 my.cnf.d]# systemctl stop mysqld.

    2023-06-06
    151
  • Python 17带来高效时间处理能力

    Python 17带来高效时间处理能力时间处理在软件开发中是一个非常关键的领域。随着时间的不断推移,时间的处理越来越多样化和复杂化。在Python17中,它带来了一些强大的库和功能,使得Python的时间处理能力更加高效和精确。本文将从几个方面来详细介绍Python17的时间处理能力。

    2024-01-05
    106
  • 用Python实现时区环境设置

    用Python实现时区环境设置在人们的日常生活中,时间是非常重要的元素。然而,在不同的地区,时间并不完全一致,各自存在时区的差别。为了让用户的体验更为便利,开发者可以通过Python实现自动根据用户所在位置获取并设置正确的时区环境。本文将重点介绍如何用Python实现时区环境设置,让读者能够快速有效地处理时间相关的问题,提升应用的用户体验。

    2024-05-04
    64
  • WEB数据库管理平台kb-dms:注册与登录【三】「建议收藏」

    WEB数据库管理平台kb-dms:注册与登录【三】「建议收藏」登录与注册 打开localhost:8080链接,进入kb-dms数据库管理平台首页 页面自动跳转到登录页面 点击登录框,右上角的按钮,页面跳转到注册页面 注册成功后,页面自动跳转到登录页面 输入注…

    2023-01-28
    546
  • 推荐两个MySQL学习资源

    推荐两个MySQL学习资源1. 《深入理解MySQL主从复制32讲》专栏 高鹏(八怪)的《深入理解MySQL主从复制32讲》专栏此前在知数堂的平台上连载,不过我们使用的有赞平台服务到期后就没再续费了,因此转战到简书了。 高鹏…

    2023-02-23
    161
  • SQL 入门教程:创建视图「终于解决」

    SQL 入门教程:创建视图「终于解决」目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 理解了什么是 视图 以及管理它们的规则和约束后,我们来创建视图。 视图用 CREATE VIEW 语句来创建。与 CREATE TABLE 一

    2023-04-21
    160
  • 简介「建议收藏」

    简介「建议收藏」更好的样式前往 我的Github笔记 查看 <md文档排版不好> 数据模型 组合键:Table + HashKey + SortKey Table实现业务数据的隔离 HashKe

    2022-12-28
    157

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注