clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测

这篇具有很好参考价值的文章主要介绍了clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 测试数据构造

1. 数据样例

官方文档有给出一批数据样例。优点是比较真实,缺点是太大了,动辄上百G不适合简单小测试

  • Anonymized Yandex.Metrica Dataset
  • Star Schema Benchmark
  • WikiStat
  • Terabyte of Click Logs from Criteo
  • AMPLab Big Data Benchmark
  • New York Taxi Data
  • OnTime

相对来说 ssb-dbgen工具 生成的表比较简单,数据量也可以自己控制,更加方便。

2. ssb-dbgen下载安装

  • 下载

https://github.com/vadimtk/ssb-dbgen

  • 安装依赖包
yum -y install gcc gcc-c++ make cmake
  • ssb-dbgen安装:解压,进入目录,执行 make 即可

3. ssb-dbgen生成测试数据

ssb-dbgen工具指定参数可以生成如下表的数据,其中lineorder是最大的

  • c–customer.tbl
  • d–date.tbl
  • p–part.tbl
  • s–supplier.tbl
  • l–lineorder.tbl
  • a-all
./dbgen -s 10 -T a

clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测,ClickHouse,性能,clickhouse,压测,数据构造,benchmark,ssb-dbgen

       -s 100 lineorder表会生成6亿行数据(约67G),-s 1000则会为其生成60亿行数据(约670G),需要大量空间和时间,注意控制。

4. 创建表结构

测试表可以都用,也可以挑一些,官方文档只建了4个

CREATE TABLE customer
(
        C_CUSTKEY       UInt32,
        C_NAME          String,
        C_ADDRESS       String,
        C_CITY          LowCardinality(String),
        C_NATION        LowCardinality(String),
        C_REGION        LowCardinality(String),
        C_PHONE         String,
        C_MKTSEGMENT    LowCardinality(String)
)
ENGINE = MergeTree ORDER BY (C_CUSTKEY);

CREATE TABLE lineorder
(
    LO_ORDERKEY             UInt32,
    LO_LINENUMBER           UInt8,
    LO_CUSTKEY              UInt32,
    LO_PARTKEY              UInt32,
    LO_SUPPKEY              UInt32,
    LO_ORDERDATE            Date,
    LO_ORDERPRIORITY        LowCardinality(String),
    LO_SHIPPRIORITY         UInt8,
    LO_QUANTITY             UInt8,
    LO_EXTENDEDPRICE        UInt32,
    LO_ORDTOTALPRICE        UInt32,
    LO_DISCOUNT             UInt8,
    LO_REVENUE              UInt32,
    LO_SUPPLYCOST           UInt32,
    LO_TAX                  UInt8,
    LO_COMMITDATE           Date,
    LO_SHIPMODE             LowCardinality(String)
)
ENGINE = MergeTree PARTITION BY toYear(LO_ORDERDATE) ORDER BY (LO_ORDERDATE, LO_ORDERKEY);

CREATE TABLE part
(
        P_PARTKEY       UInt32,
        P_NAME          String,
        P_MFGR          LowCardinality(String),
        P_CATEGORY      LowCardinality(String),
        P_BRAND         LowCardinality(String),
        P_COLOR         LowCardinality(String),
        P_TYPE          LowCardinality(String),
        P_SIZE          UInt8,
        P_CONTAINER     LowCardinality(String)
)
ENGINE = MergeTree ORDER BY P_PARTKEY;

CREATE TABLE supplier
(
        S_SUPPKEY       UInt32,
        S_NAME          String,
        S_ADDRESS       String,
        S_CITY          LowCardinality(String),
        S_NATION        LowCardinality(String),
        S_REGION        LowCardinality(String),
        S_PHONE         String
)
ENGINE = MergeTree ORDER BY S_SUPPKEY;

将star schema转换为flat schema(表关联转为大宽表):

SET max_memory_usage = 20000000000;

CREATE TABLE lineorder_flat
ENGINE = MergeTree ORDER BY (LO_ORDERDATE, LO_ORDERKEY)
AS SELECT
    l.LO_ORDERKEY AS LO_ORDERKEY,
    l.LO_LINENUMBER AS LO_LINENUMBER,
    l.LO_CUSTKEY AS LO_CUSTKEY,
    l.LO_PARTKEY AS LO_PARTKEY,
    l.LO_SUPPKEY AS LO_SUPPKEY,
    l.LO_ORDERDATE AS LO_ORDERDATE,
    l.LO_ORDERPRIORITY AS LO_ORDERPRIORITY,
    l.LO_SHIPPRIORITY AS LO_SHIPPRIORITY,
    l.LO_QUANTITY AS LO_QUANTITY,
    l.LO_EXTENDEDPRICE AS LO_EXTENDEDPRICE,
    l.LO_ORDTOTALPRICE AS LO_ORDTOTALPRICE,
    l.LO_DISCOUNT AS LO_DISCOUNT,
    l.LO_REVENUE AS LO_REVENUE,
    l.LO_SUPPLYCOST AS LO_SUPPLYCOST,
    l.LO_TAX AS LO_TAX,
    l.LO_COMMITDATE AS LO_COMMITDATE,
    l.LO_SHIPMODE AS LO_SHIPMODE,
    c.C_NAME AS C_NAME,
    c.C_ADDRESS AS C_ADDRESS,
    c.C_CITY AS C_CITY,
    c.C_NATION AS C_NATION,
    c.C_REGION AS C_REGION,
    c.C_PHONE AS C_PHONE,
    c.C_MKTSEGMENT AS C_MKTSEGMENT,
    s.S_NAME AS S_NAME,
    s.S_ADDRESS AS S_ADDRESS,
    s.S_CITY AS S_CITY,
    s.S_NATION AS S_NATION,
    s.S_REGION AS S_REGION,
    s.S_PHONE AS S_PHONE,
    p.P_NAME AS P_NAME,
    p.P_MFGR AS P_MFGR,
    p.P_CATEGORY AS P_CATEGORY,
    p.P_BRAND AS P_BRAND,
    p.P_COLOR AS P_COLOR,
    p.P_TYPE AS P_TYPE,
    p.P_SIZE AS P_SIZE,
    p.P_CONTAINER AS P_CONTAINER
FROM lineorder AS l
INNER JOIN customer AS c ON c.C_CUSTKEY = l.LO_CUSTKEY
INNER JOIN supplier AS s ON s.S_SUPPKEY = l.LO_SUPPKEY
INNER JOIN part AS p ON p.P_PARTKEY = l.LO_PARTKEY;

5. 导入数据

cd ssb-dbgen-master

clickhouse-client --password --query "INSERT INTO hydb.customer FORMAT CSV" < customer.tbl
clickhouse-client --password --query "INSERT INTO hydb.part FORMAT CSV" < part.tbl
clickhouse-client --password --query "INSERT INTO hydb.supplier FORMAT CSV" < supplier.tbl
clickhouse-client --password --query "INSERT INTO hydb.lineorder FORMAT CSV" < lineorder.tbl

如果还不够,也可以多次执行以下语句,至满意数据量

insert into hydb.lineorder select * from hydb.lineorder;

二、 clickhouse-benchmark简单压测

clickhouse-benchmark是自带的一个简单压测工具,可以控制执行SQL的次数、并发度等。

1. 常用参数

  • -c 并发度,例如10个并发同时执行指定SQL
  • -d 间隔几秒执行SQL,默认为1,0表示禁用
  • -h 指定连接的db ip,可以同时指定多个-h 连接多个库进行对比
  • -i SQL执行总次数
  • -r 有多个SQL时,以随机顺序执行
  • -t 指定压测时间,到达指定时间后停止发送压测SQL。默认为0,表示无限制

2. 两种用法

  • 直接执行,适合简单SQL
echo "SELECT toYear(LO_ORDERDATE),count(*) FROM hydb.lineorder group by toYear(LO_ORDERDATE) order by 2 desc" | clickhouse-benchmark --password='xxxx' -i 10
  • 执行SQL文件,适合复杂、批量语句
vi queries_file

#查询语句
SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue FROM hydb.lineorder WHERE toYear(LO_ORDERDATE) = 1993 AND LO_DISCOUNT BETWEEN 1 AND 3 AND LO_QUANTITY < 25;

执行压测

clickhouse-benchmark --password='xxxx' -i 10 < queries_file

压测的语句可以简单写点,也可以参考:Star Schema Benchmark | ClickHouse Docs

3. 结果分析

Queries executed: 10.

localhost:9000, queries 10, QPS: 6.772, RPS: 67904487.440, MiB/s: 518.070, result RPS: 67721584.984, result MiB/s: 516.675.

0.000% 0.145 sec.
10.000% 0.146 sec.
20.000% 0.146 sec.
30.000% 0.146 sec.
40.000% 0.147 sec.
50.000% 0.148 sec.
60.000% 0.148 sec.
70.000% 0.148 sec.
80.000% 0.149 sec.
90.000% 0.150 sec.
95.000% 0.150 sec.
99.000% 0.150 sec.
99.900% 0.150 sec.
99.990% 0.150 sec.

在结果报告中,您可以找到:

  • 查询数量:参见Queries executed:字段。

  • 状态码(按顺序给出):

    • ClickHouse服务器的连接信息。
    • 已处理的查询数。
    • QPS:服务端每秒处理的查询数量
    • RPS:服务器每秒读取多少行
    • MiB/s:服务器每秒读取多少字节的数据
    • 结果RPS:服务端每秒生成多少行的结果集数据
    • 结果MiB/s.服务端每秒生成多少字节的结果集数据
  • 查询执行时间的百分比。

参考

https://github.com/vadimtk/ssb-dbgen

Star Schema Benchmark | ClickHouse Docs

性能测试 | ClickHouse Docs

使用 ssb-dbgen 对 ClickHouse 压测_数据库人生的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-672430.html

到了这里,关于clickhouse ssb-dbgen数据构造 及 clickhouse-benchmark简单压测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

    参考1:MySQL(通过该配置实现了实时同步) 参考2:experimental MaterializedMySQL 参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql) MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行

    2024年01月16日
    浏览(42)
  • 【Flink】【ClickHouse】写入流式数据到ClickHouse

    Flink 安装的教程就不在这里赘叙了,可以看一下以前的文章,这篇文章主要是把流式数据写入的OLAP(ClickHouse)中作查询分析 Flink 1.13.2, ClickHouse 22.1.3.7 这里直接使用docker安装,没有安装的同学可以使用homebreak来安装,执行下面的命令即可( 已经安装了docker的可以忽略 ) 四指

    2024年02月03日
    浏览(42)
  • ClickHouse进阶(七):Clickhouse数据查询-1

    进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅:拥抱独家专题,你的订阅将点燃我的创作热情! 👍点赞:赞同优秀创作,你

    2024年02月10日
    浏览(47)
  • clickhouse系列3:clickhouse分析英国房产价格数据

     本文使用的数据集下载链接: https://download.csdn.net/download/shangjg03/88478086 该数据集包含有关英格兰和威尔士自1995年起到2023年的房地产价格的数据,超过2800万条记录,未压缩形式的数据集大小超过4GB,在ClickHouse中需要约306MB。

    2024年02月10日
    浏览(31)
  • 大数据ClickHouse(二十):ClickHouse 可视化工具操作

    文章目录 ClickHouse 可视化工具操作 一、tabix 1、直接浏览器访问 2、ClickHouse内嵌方式

    2024年02月02日
    浏览(37)
  • 大数据系列——什么是ClickHouse?ClickHouse有什么用途?

    目录 一、什么是ClickHouse 二、ClickHouse有什么用途 三、ClickHouse的不足 四、适用场景 五、ClickHouse特点 六、ClickHouse VS MySQL 七、类SQL 语句  八、核心概念 clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的 列式存储数据库, 使用 C++ 语言编写; 一款面向 OLAP 的数据库 ClickHouse支持类

    2024年01月22日
    浏览(41)
  • Clickhouse Engine kafka 将kafka数据同步clickhouse

    根据官方给出的kafka引擎文档,做一个实践记录。 官方地址:https://clickhouse.tech/docs/zh/engines/table-engines/integrations/kafka/ 1、特性介绍 clickhouse支持kafka的表双向同步,其中提供的为Kafka引擎。 其大致情况为如下情况:Kafka主题中存在对应的数据格式,Clickhouse创建一个Kafka引擎表(

    2024年01月16日
    浏览(46)
  • clickhouse插入数据

    clickhouse中插入数据,最好性能是按照指定格式插入文件,这样是ck擅长的,因为ck是写入block的,每个block的大小在配置文件中设置有,这样在数据未写满block的时候,要么写成功要么写失败,不能部分成功。 ck写入没有写满block的时候的原子性,只有在只有在ClickHouse服务端处

    2024年02月11日
    浏览(16)
  • clickhouse 数据导入导出操作

    在ClickHouse中处理CSV和TSV数据 ClickHouse支持从CSV导入和导出数据。由于 CSV 文件可以具有不同的格式细节,包括标题行、自定义分隔符和转义符号,因此 ClickHouse 提供了格式和设置来有效地解决每种情况。 从 CSV 文件导入数据 在导入数据之前,让我们创建一个具有相关结构的表

    2024年01月20日
    浏览(39)
  • sqlserver->clickhouse迁移数据

    网上看了很多cdc的方案,说实在的,flink也不好弄,主要是驱动。         flink sql中的方案,好不容易弄到了所有的驱动,结果,字段非常难搞,例如uuid对应flink的String,结果执行flink sql的时候,字段类型不对。导入布尔值的时候,提示true不合法,哎,也是醉了!     

    2024年01月20日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包