TiDB TPC-H 性能对比测试报告 - v4.0 对比 v3.0
因为 TiDB v4.0 中新引入了 组件增强 TiDB HTAP 形态,本文的测试对象如下:
- v3.0 仅从 TiKV 读取数据。
- v4.0 仅从 TiKV 读取数据。
- v4.0 通过智能选择混合读取 TiKV、TiFlash 的数据。
测试环境 (AWS EC2)
v3.0
v3.0 的 TiDB 和 TiKV 均为默认参数配置。
变量配置
v4.0
v4.0 的 TiDB 为默认参数配置。
TiKV 配置
readpool.coprocessor.use-unified-pool: true
PD 配置
TiFlash 配置
logger.level: "info"
learner_config.log-level: "info"
变量配置
硬件准备
测试过程
通过 TiUP 部署 TiDB v4.0 和 v3.0。
通过 TiUP 的 bench 工具导入 TPC-H 10G 数据。
执行以下命令将数据导入 v3.0:
tiup bench tpch prepare \
--analyze --tidb_build_stats_concurrency 8 --tidb_distsql_scan_concurrency 30
执行以下命令将数据导入 v4.0:
运行 TPC-H 的查询。
-
git clone https://github.com/pingcap/tidb-bench.git && cd tpch/queries
查询并记录耗时。
- 对于 TiDB v3.0,使用 MySQL 客户端连接到 TiDB,然后执行查询,记录 v3.0 查询耗时。
- 对于 TiDB v4.0,使用 MySQL 客户端连接到 TiDB,再根据测试的形态,选择其中一种操作:
- 设置
set @@session.tidb_isolation_read_engines = 'tikv,tidb';
后,再执行查询,记录 v4.0 仅从 TiKV 读取数据的查询耗时。 - 设置
set @@session.tidb_isolation_read_engines = 'tikv,tiflash,tidb';
后,再执行查询,记录 v4.0 通过智能选择从 TiKV 和 TiFlash 混合读取数据的查询耗时。
- 设置
-
提取整理耗时数据。
注意:
本测试所执行 SQL 语句对应的表只有主键,没有建立二级索引。因此以下测试结果为无索引结果。
- v4.0(仅从 TiKV 读取数据),即 TiDB 仅会从 TiKV 中读取数据。将该结果与 v3.0 的结果对比可得知,TiDB、TiKV 升级至 4.0 版本后,TPC-H 性能得到的提升幅度。