SQL优化评测 - PawSQL针对TPCH的优化评测
· 阅读需 10 分钟
概述
TPCH (TPC Benchmark H) 是一项针对决策支持系统的数据库基准测试。它由TPC (Transaction Processing Performance Council) 于1994年首次发布。TPCH测试由一组22个复杂的业务查询和若干数据维护查询组成,用于衡量关系数据库管理系统在复杂的分析查询下的性能。这些查询模拟了一个批发供应商的数据仓库中的真实查询,涵盖订单分析、供应链管理、部分销售分析等方面。数据库厂商会使用TPCH测试自己产品,评估不同服务器、存储配置、并行处理、资源调度对数据库性能的影响。
本文将在硬件配置、数据库参数保持不变的情况下,仅仅从查询重写和索引推荐的角度,评估PawSQL的优化建议对于TPCH测试集的性能提升作用。
测试基准
为了更好的模拟真实场景,我们把测试基准建立在比较高的基础之上。
- 我们使用TPC官方提供的工具进行测试数据的生成;
- 我们采用TPC官方提供的工具进行查询语句的生成,并且确保每个过滤条件能够产生大量的数据进行后续的聚集运算;
- 我们针对主键和外键建立了对应的索引,确保表关联时的性能在保持在一定基准上。
环境准备
由于本次评测主要针对PawSQL的优化建议,所以我们降低硬件配置,同时采用默认参数配置。
- 硬件环境: 2C4G
- MySQL 8.0.17
- 参数配置(官方默认)
数据量
表名 | 行数 | 引擎 |
---|---|---|
customer | 15000 | INNODB |
lineitem | 600572 | INNODB |
nation | 25 | INNODB |
orders | 150000 | INNODB |
part | 20000 | INNODB |
partsupp | 80000 | INNODB |
region | 5 | INNODB |
supplier | 1000 | INNODB |
索引情况
优化结果
- 针对TPCH的22个查询语句,对其中的21个查询有优化建议;推荐了 8 个重写优化,推荐了 21 个索引;
- 优化建议有性能提升的查询有18个,占比86%; 性能提升超过50%的查询有12个,占比60%;
- 平均性能提升 276.40%,提升最大的Query性能提升近15倍。