前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GreatSQL TPC-H 性能测试报告正式发布!

GreatSQL TPC-H 性能测试报告正式发布!

作者头像
老叶茶馆
发布2024-03-02 10:21:02
970
发布2024-03-02 10:21:02
举报
文章被收录于专栏:MySQL修行 | 老叶茶馆

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。

TPC-H 性能测试报告 - (2024 年 2 月28日)

完整性能测试报告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html

1、概述

本次测试针对GreatSQL数据库基于标准 TPC-H 场景的测试。

TPC-H(商业智能计算测试)是美国交易处理效能委员会(TPC,TransactionProcessing Performance Council)组织制定的用来模拟决策支持类应用的一个测试集。目前,学术界和工业界普遍采用 TPC-H 来评价决策支持技术方面应用的性能。这种商业测试可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用,TPC-H 查询包含八张数据表和 22 条复杂 SQL 查询,大多数查询包含多表联接(JOIN)、子查询和聚合查询等。

GreatSQL数据库是一款开源免费数据库,可在普通硬件上满足金融级应用场景,具有高可用高性能高兼容高安全等特性,可作为MySQL或Percona Server for MySQL的理想可选替换。

2、测试环境

配置

备注

操作系统

OS:CentOS Linux release 7.9.2009 (Core)内核:3.10.0-1160.el7.x86_64

CPU

Intel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz * 4

内存

251G

磁盘

INTEL SSDPE2KE032T8

数据库

GreatSQL 8.0.32-25, Release 25, Revision 79f57097e3f

提示:在下面运行TPC-H测试时,设置了Rapid引擎最大可使用的内存及线程数。

代码语言:javascript
复制
greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
greatsql> SET GLOBAL rapid_worker_threads = 32;

3、测试表结构和数据量

各表数据量对比:

表名

TPC-H SF100数据量

TPC-H SF300数据量

备注

region

5

5

地区信息

nation

25

25

国家表

supplier

1000000

3000000

供应商信息

part

20000000

60000000

零件表

customer

15000000

45000000

消费者表

partsupp

80000000

240000000

配件供应表

orders

150000000

450000000

订单表

lineitem

600037902

1799989091

订单明细表

Rapid引擎表空间压缩率:

库名

InnoDB表空间文件总大小

Rapid引擎表空间总大小

压缩率

TPC-H SF100

184570593436

28728373248

6.42

TPC-H SF300

591644573888

74334864443

7.96

各表结构关系如下图所示:

4、测试结果

GreatSQL 8.0.32-25中,采用全新的Rapid存储引擎,使得其在TPC-H性能测试中表现大大优于此前的其他版本,也大大优于MySQL社区版、Percona Server MySQL、MariaDB等数据库。

在TPC-H SF100场景下,运行完全部22个TPC-H查询SQL总耗时为79.28秒。在TPC-H SF300场景下,运行完全部22个TPC-H查询SQL总耗时为386.195秒

每条SQL详细耗时如下:

TPC-H Query

GreatSQL TPC-H SF100(32C64G)耗时(秒)

GreatSQL TPC-H SF300(32C64G)耗时(秒)

Q1

1.184

3.537

Q2

0.924

3.865

Q3

1.324

4.167

Q4

3.678

22.712

Q5

1.287

4.119

Q6

0.344

0.959

Q7

5.48

50.217

Q8

1.13

3.534

Q9

7.311

31.872

Q10

2.885

15.301

Q11

0.477

0.921

Q12

0.799

2.294

Q13

3.758

10.997

Q14

0.966

2.471

Q15

2.831

11.898

Q16

1.194

3.487

Q17

8.537

27.523

Q18

13.007

108.237

Q19

1.892

4.046

Q20

4.21

10.668

Q21

11.965

60.084

Q22

2.513

3.286

总耗时

77.696

386.195

GreatSQL SF100 vs SF300(32C64G)对比示意图如下

5、测试步骤

5.1 安装 GreatSQL

请参考GreatSQL手册内容:安装指南https://greatsql.cn/docs/8032-25/user-manual/4-install-guide/0-install-guide.html,完成GreatSQL安装。

5.2 生成 TPC-H 测试数据

请参考GreatSQL手册内容:TPC-H性能测试https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-2-benchmark-tpch.html,完成TPC-H工具编译安装。

运行 TPC-H dbgen 工具,生成数据文件,一共会生成 8 个表对应的 tbl 数据文件,例如:

代码语言:javascript
复制
$ ./dbgen -vf -s 100
...

$ ls -l *tbl
-rw-r--r-- 1 root root  2463490271 Sep 26 09:20 customer.tbl
-rw-r--r-- 1 root root 79579694556 Sep 26 09:20 lineitem.tbl
-rw-r--r-- 1 root root        2224 Sep 26 09:20 nation.tbl
-rw-r--r-- 1 root root 17793116301 Sep 26 09:20 orders.tbl
-rw-r--r-- 1 root root 12209211160 Sep 26 09:20 partsupp.tbl
-rw-r--r-- 1 root root  2453234158 Sep 26 09:20 part.tbl
-rw-r--r-- 1 root root         389 Sep 26 09:20 region.tbl
-rw-r--r-- 1 root root   142869803 Sep 26 09:20 supplier.tbl

也可以参考 duckdb_dbgen.pyhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/duckdb_dbgen.py 脚本做法,利用duckdb并行生成测试数据。

5.3 创建 TPC-H 测试数据库表并导入数据

参考GreatSQL社区提供的TPC-H数据库表初始化脚本:tpch-create-table.sqlhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/tpch-create-table.sql,完成TPC-H测试数据库表创建。

代码语言:javascript
复制
$ mysql -f < tpch-create-table.sql
$ mysqlshow tpch100
Database: tpch100
+----------+
|  Tables  |
+----------+
| customer |
| lineitem |
| nation   |
| orders   |
| part     |
| partsupp |
| region   |
| revenue0 |
| supplier |
+----------+

利用GreatSQL的 parallel load data特性https://greatsql.cn/docs/8032-25/user-manual/5-enhance/5-1-highperf-parallel-load.html 并行导入TPC-H测试数据。

需要先修改GreatSQL选项secure_file_priv设置,指向上述 workdir 所在目录,重启GreatSQL使之生效。

参考GreatSQL社区提供的并发导入脚本:load-data-parallel.shhttps://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0.1/load-data-parallel.sh,完成数据导入。

提示:运行LOAD DATA导入数据时,可能会在 tmpdir 产生临时文件,因此要保证 tmpdir 有足够的剩余可用磁盘空间。

5.4 确认Rapid引擎设置,并加载数据到secondary engine

数据导入完成后,在开始运行TPC-H测试前,需要先将测试数据加载到secondary engine引擎中。

先执行下面命令,动态修改Rapid引擎最大可使用内存,其余相关选项均为默认值:

代码语言:javascript
复制
greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
greatsql> SET GLOBAL rapid_worker_threads = 32;

之后,执行以下命令加载测试数据到secondary engine:

代码语言:javascript
复制
greatsql> alter table customer secondary_load;
alter table lineitem secondary_load;
alter table nation secondary_load;
alter table orders secondary_load;
alter table part secondary_load;
alter table partsupp secondary_load;
alter table region secondary_load;
alter table supplier secondary_load;

这个过程需要一定时间,请耐心等待。

5.5 执行 TPC-H 测试

参考GreatSQL社区提供的TPC-H性能测试脚本,完成测试,并记录各个SQL的耗时。

该测试脚本大概工作模式如下:

  1. 先执行22个查询SQL,进行数据预热,每条SQL各执行2次。
  2. 再分别执行22个查询SQL,每个SQL各执行3次。
  3. 每次执行SQL都会记录其起止时间,及其耗时,如下面例所示:
代码语言:javascript
复制
[2023-09-27 01:38:45] BEGIN RUN TPC-H Q1 1 times
[2023-09-27 01:38:46] TPC-H Q1 END, COST: 1.301s


[2023-09-27 01:38:46] BEGIN RUN TPC-H Q1 2 times
[2023-09-27 01:38:47] TPC-H Q1 END, COST: 0.787s

上述结果中的 COST: 1.301s ,即为本SQL的运行耗时:1.301秒。

完整性能测试报告https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-benchmark-greatsql-tpch-report.html

Enjoy GreatSQL :)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老叶茶馆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、概述
  • 2、测试环境
  • 3、测试表结构和数据量
  • 4、测试结果
  • 5、测试步骤
    • 5.1 安装 GreatSQL
      • 5.2 生成 TPC-H 测试数据
        • 5.3 创建 TPC-H 测试数据库表并导入数据
          • 5.4 确认Rapid引擎设置,并加载数据到secondary engine
            • 5.5 执行 TPC-H 测试
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档