TiDB Sysbench 性能对比测试报告 - v3.0 对比 v2.1
测试目的
对比 TiDB 3.0 版本和 2.1 版本在 OLTP 场景下的性能。
测试版本、时间、地点
TiDB 版本:v3.0.0 vs. v2.1.13
时间:2019 年 6 月
地点:北京
测试环境
测试在 AWS EC2 上进行,使用 CentOS-7.6.1810-Nitro (ami-028946f4cffc8b916) 镜像,各组件实例类型如下:
Sysbench 版本:1.0.17
测试方案
使用 Sysbench 向集群导入 16 张表,每张数据 1000 万。起 3 个 sysbench 分别向 3 个 TiDB 发压,请求并发数逐步增加,单次测试时间 5 分钟。
准备数据命令:
sysbench oltp_common \
--threads=16 \
--rand-type=uniform \
--db-driver=mysql \
--mysql-db=sbtest \
--mysql-host=$tidb_host \
--mysql-port=$tidb_port \
--mysql-user=root \
--mysql-password=password \
prepare --tables=16 --table-size=10000000
执行测试命令:
sysbench $testname \
--threads=$threads \
--time=300 \
--report-interval=15 \
--rand-type=uniform \
--rand-seed=$RANDOM \
--db-driver=mysql \
--mysql-db=sbtest \
--mysql-host=$tidb_host \
--mysql-port=$tidb_port \
--mysql-user=root \
--mysql-password=password \
run --tables=16 --table-size=10000000
TiDB 版本信息
v3.0.0
v2.1.13
TiDB 参数配置
2.1 和 3.0 中开启 prepared plan cache (出于优化考虑,2.1 的 point select 与 read write 并未开启):
[prepared-plan-cache]
enabled = true
并设置全局变量:
set global tidb_hashagg_final_concurrency=1;
set global tidb_hashagg_partial_concurrency=1;
set global tidb_disable_txn_auto_retry=0;
此外 3.0 还做了如下配置:
[tikv-client]
max-batch-wait-time = 2000000
TiKV 参数配置
2.1 和 3.0 使用如下配置:
log-level = "error"
[readpool.storage]
normal-concurrency = 10
[server]
grpc-concurrency = 6
[rocksdb.defaultcf]
block-cache-size = "14GB"
[rocksdb.writecf]
block-cache-size = "8GB"
[rocksdb.lockcf]
block-cache-size = "1GB"
3.0 还做了如下配置:
[raftstore]
apply-pool-size = 3
store-pool-size = 3
集群拓扑
测试结果
Point Select 测试
v2.1
v3.0
Update Non-Index 测试
v2.1
v3.0
Update Index 测试
v2.1
v3.0
Read Write 测试
v2.1
v3.0



