环境说明
集群拓扑
配置文件
在相同的服务器上部署V4.0.12和V5.0.0两个版本的集群,部署参数两个集群都相同,下面参数做了调整:
server_configs:
tidb:
log.slow-threshold: 2000
binlog.enable: false
binlog.ignore-error: false
tikv:
storage.block-cache.capacity: "2GB"
readpool.storage.use-unified-pool: false
readpool.coprocessor.use-unified-pool: true
pd:
schedule.leader-schedule-limit: 4
schedule.region-schedule-limit: 2048
schedule.replica-schedule-limit: 64
压测
我们这边目前线上4.0的集群有个场景只是单纯的insert,所以我这边先只测下insert场景,看看5.0的异步提交能给insert场景加速多少。
使用sysbench 初始化100万数据,对比哪个集群写入的快
- sysbench配置如下:
mysql-host=xx.xx.184.43
mysql-port=4005 #5.0.0集群
mysql-port=4000 #4.0.12集群
mysql-user=root
mysql-password=xxx
mysql-db=sbtest
time=1200
threads=64
report-interval=10
db-driver=mysql
- 压测命令
time sysbench oltp_common --config-file=config_4 --table-size=1000000 prepare
time sysbench oltp_common --config-file=config_5 --table-size=1000000 prepare
- 压测说明
因为两个集群是部署在相同的服务器上,为了没有集群间相互影响,压测是窜行的,即当4.0的压测结束才会进行5.0的压测 - 压测结果
版本 | 压测数据量 | 结果 | 参数 | 轮数 |
---|---|---|---|---|
V4.0.12 | 100w | 0m52.055s | tidb_dml_batch_size=20000 | 第一轮 |
V5.0.0 | 100w | 1m8.385s | 异步提交开启,tidb_dml_batch_size=0 | 第一轮 |
V4.0.12 | 100w | 0m52.917s | tidb_dml_batch_size=20000 | 第二轮 |
V5.0.0 | 100w | 1m7.428s | 异步提交开启,tidb_dml_batch_size=20000 | 第二轮 |
V5.0.0 | 100w | 1m5.904s | 异步提交关闭,tidb_dml_batch_size=20000 | 第二轮 |
V4.0.12 | 1000w | 8m55.257s | tidb_dml_batch_size=20000 | 第三轮 |
V5.0.0 | 1000w | 12m28.236s | 异步提交开启,tidb_dml_batch_size=20000 | 第三轮 |
- 结论
从压测结果看无论是5.0开启异步提交还是关闭异步提交,还有开启批量提交,insert的性能都没有4.0的好,感觉这个不是预期内的