共计 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 的耗时。
该测试脚本大略工作模式如下:
- 先执行 22 个查问 SQL,进行数据预热,每条 SQL 各执行 2 次。
- 再别离执行 22 个查问 SQL,每个 SQL 各执行 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 社区助手
微信好友,发送验证信息加群
。