关于数据库:GreatSQL-TPCH-性能测试报告正式发布

24次阅读

共计 4573 个字符,预计需要花费 12 分钟才能阅读完成。

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

残缺性能测试报告:https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-3-b…

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)<br/> 内核: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 引擎最大可应用的内存及线程数。

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/… 实现 GreatSQL 装置。

5.2 生成 TPC-H 测试数据

请参考 GreatSQL 手册内容:TPC- H 性能测试 ➥https://greatsql.cn/docs/8032-25/user-manual/10-optimze/3-2-b… 实现 TPC- H 工具编译装置。

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

$ ./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.py ➥ https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0…. 脚本做法,利用 duckdb 并行生成测试数据。

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

参考 GreatSQL 社区提供的 TPC- H 数据库表初始化脚本:tpch-create-table.sql ➥ https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0…. 实现 TPC- H 测试数据库表创立。

$ 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-hi… 并行导入 TPC- H 测试数据。

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

参考 GreatSQL 社区提供的并发导入脚本:load-data-parallel.sh ➥ https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/tpch/3.0…. 实现数据导入。

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

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

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

先执行上面命令,动静批改 Rapid 引擎最大可应用内存,其余相干选项均为默认值:

greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
greatsql> SET GLOBAL rapid_worker_threads = 32;

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

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 都会记录其起止工夫,及其耗时,如上面例所示:
[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-b…


Enjoy GreatSQL :)

## 对于 GreatSQL

GreatSQL 是实用于金融级利用的国内自主开源数据库,具备高性能、高牢靠、高易用性、高平安等多个外围个性,能够作为 MySQL 或 Percona Server 的可选替换,用于线上生产环境,且完全免费并兼容 MySQL 或 Percona Server。

相干链接:GreatSQL 社区 Gitee GitHub Bilibili

GreatSQL 社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

技术交换群:

微信:扫码增加 GreatSQL 社区助手 微信好友,发送验证信息 加群

正文完
 0