翼度科技»论坛 编程开发 mysql 查看内容

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

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15

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_64CPUIntel(R) Xeon(R) Gold 6238 CPU @ 2.10GHz * 4内存251G磁盘INTEL SSDPE2KE032T8数据库GreatSQL 8.0.32-25, Release 25, Revision 79f57097e3f提示:在下面运行TPC-H测试时,设置了Rapid引擎最大可使用的内存及线程数。
  1. greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
  2. greatsql> SET GLOBAL rapid_worker_threads = 32;
复制代码
3、测试表结构和数据量

各表数据量对比:
表名TPC-H SF100数据量TPC-H SF300数据量备注region55地区信息nation2525国家表supplier10000003000000供应商信息part2000000060000000零件表customer1500000045000000消费者表partsupp80000000240000000配件供应表orders150000000450000000订单表lineitem6000379021799989091订单明细表Rapid引擎表空间压缩率:
库名InnoDB表空间文件总大小Rapid引擎表空间总大小压缩率TPC-H SF100184570593436287283732486.42TPC-H SF300591644573888743348644437.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 QueryGreatSQL TPC-H SF100(32C64G)耗时(秒)GreatSQL TPC-H SF300(32C64G)耗时(秒)Q11.1843.537Q20.9243.865Q31.3244.167Q43.67822.712Q51.2874.119Q60.3440.959Q75.4850.217Q81.133.534Q97.31131.872Q102.88515.301Q110.4770.921Q120.7992.294Q133.75810.997Q140.9662.471Q152.83111.898Q161.1943.487Q178.53727.523Q1813.007108.237Q191.8924.046Q204.2110.668Q2111.96560.084Q222.5133.286总耗时77.696386.195GreatSQL 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 数据文件,例如:
  1. $ ./dbgen -vf -s 100
  2. ...
  3. $ ls -l *tbl
  4. -rw-r--r-- 1 root root  2463490271 Sep 26 09:20 customer.tbl
  5. -rw-r--r-- 1 root root 79579694556 Sep 26 09:20 lineitem.tbl
  6. -rw-r--r-- 1 root root        2224 Sep 26 09:20 nation.tbl
  7. -rw-r--r-- 1 root root 17793116301 Sep 26 09:20 orders.tbl
  8. -rw-r--r-- 1 root root 12209211160 Sep 26 09:20 partsupp.tbl
  9. -rw-r--r-- 1 root root  2453234158 Sep 26 09:20 part.tbl
  10. -rw-r--r-- 1 root root         389 Sep 26 09:20 region.tbl
  11. -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测试数据库表创建。
  1. $ mysql -f < tpch-create-table.sql
  2. $ mysqlshow tpch100
  3. Database: tpch100
  4. +----------+
  5. |  Tables  |
  6. +----------+
  7. | customer |
  8. | lineitem |
  9. | nation   |
  10. | orders   |
  11. | part     |
  12. | partsupp |
  13. | region   |
  14. | revenue0 |
  15. | supplier |
  16. +----------+
复制代码
利用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引擎最大可使用内存,其余相关选项均为默认值:
  1. greatsql> SET GLOBAL rapid_memory_limit = 68719476736;
  2. greatsql> SET GLOBAL rapid_worker_threads = 32;
复制代码
之后,执行以下命令加载测试数据到secondary engine:
  1. greatsql> alter table customer secondary_load;
  2. alter table lineitem secondary_load;
  3. alter table nation secondary_load;
  4. alter table orders secondary_load;
  5. alter table part secondary_load;
  6. alter table partsupp secondary_load;
  7. alter table region secondary_load;
  8. alter table supplier secondary_load;
复制代码
这个过程需要一定时间,请耐心等待。
5.5 执行 TPC-H 测试

参考GreatSQL社区提供的TPC-H性能测试脚本,完成测试,并记录各个SQL的耗时。
该测试脚本大概工作模式如下:

  • 先执行22个查询SQL,进行数据预热,每条SQL各执行2次。
  • 再分别执行22个查询SQL,每个SQL各执行3次。
  • 每次执行SQL都会记录其起止时间,及其耗时,如下面例所示:
  1. [2023-09-27 01:38:45] BEGIN RUN TPC-H Q1 1 times
  2. [2023-09-27 01:38:46] TPC-H Q1 END, COST: 1.301s
  3. [2023-09-27 01:38:46] BEGIN RUN TPC-H Q1 2 times
  4. [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
来源:https://www.cnblogs.com/greatsql/p/18039042
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具