写点什么

tidb 4.0.13 VS 7.5.5,基准测试结果有点意外

  • 2025-02-14
    北京
  • 本文字数:5653 字

    阅读完需:约 19 分钟

作者: xxxxxxxx 原文来源:https://tidb.net/blog/c60878fa

一、环境介绍

1、集群节点情况

  • (1)4.0.13

  • (2)7.5.5


两套集群的 tikv 节点都是三个,且在相同的机器,自定义的配置都是一致其余配置使用的是相应版本的默认值。


tikv 的机器内存 /cpu 分别为 192GB/48C。

二、开始测试

1、prepare

sysbench /usr/local/sysbench/src/lua/oltp_read_write.lua \--mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor \--mysql-user=test --mysql-password=123456 --table_size=10000000 \--tables=32 --threads=8 --report-interval=10 --time=60 prepare
复制代码


192.168.1.100 是 vip,rs 绑了三个 tidb 节点。

2、run

/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_point_select.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=50  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_read_write.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=50  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_non_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=50  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=50  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_insert.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=50  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_point_select.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=100  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_read_write.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=100  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_non_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=100  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=100  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_insert.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=100  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_point_select.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=200  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_read_write.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=200  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_non_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=200  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_update_index.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=200  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false runsleep 120/usr/local/sysbench/bin/sysbench /usr/local/sysbench/src/lua/oltp_insert.lua --mysql-host=192.168.1.100 --mysql-port=15122 --mysql-db=tidb_monitor --mysql-user=test --mysql-password=123456 --table_size=100000000 --tables=32 --threads=200  --report-interval=10 --time=120 --db-driver=mysql --mysql-ignore-errors=1317,1105,1062,2013,8028,9007 --auto-inc=false run
复制代码


两个版本都是使用这个测试脚本。

(1)oltp_point_select
  • 50 并发



下图是 4.0.13 版本 50 并发测试点查的监。


process-info.png


下图是 7.5.5 版本 50 并发测试点查的监控。


process-info.png


在 50 并发的点查场景下4.0.13的 QPS 比7.5.513.6%左右。


  • 100 并发



下图是 4.0.13 版本 100 并发测试点查的监。


process-info.png


下图是 7.5.5 版本 100 并发测试点查的监控。


process-info.png


在 100 并发的点查场景下4.0.13的 QPS 比7.5.58.5%左右。


  • 200 并发



下图是 4.0.13 版本 200 并发测试点查的监。


process-info.png


下图是 7.5.5 版本 200 并发测试点查的监控。


process-info.png


在 200 并发的点查场景下4.0.13的 QPS 比7.5.57.3%左右。


可以发现4.0.13版本更胜一筹,但是随着并发数的增加,4.0.137.5.5的差距越来越小。

(2)oltp_read_write
  • 50 并发



下图是 4.0.13 版本 50 并发测试混合读写的监控。


process-info.png


下图是 7.5.5 版本 50 并发测试混合读写的监控。


process-info.png


在 50 并发的混合读写场景下7.5.5的 QPS 比4.0.1311.6%左右,TPS 也高11.6%左右。


  • 100 并发



下图是 4.0.13 版本 100 并发测试混合读写的监控。


process-info.png


下图是 7.5.5 版本 50 并发测试混合读写的监控


process-info.png


在 100 并发的混合读写场景下7.5.5的 QPS 比4.0.1314.7%左右,TPS 也高14.7%左右。


  • 200 并发



下图是 4.0.13 版本 200 并发测试混合读写的监控。


process-info.png


下图是 7.5.5 版本 200 并发测试混合读写的监控


process-info.png


在 200 并发的混合读写场景下7.5.5的 QPS 比4.0.1319.0%左右,TPS 也高19.0%左右。


可以发现7.5.5版本更胜一筹,但是随着并发数的增加,4.0.137.5.5的差距越来越大。

(3)oltp_update_non_index
  • 50 并发



下图是 4.0.13 版本 50 并发测试 update(非索引字段)的监控。


process-info.png


下图是 7.5.5 版本 50 并发测试 update(非索引字段)的监控。


process-info.png


在 50 并发的更新(非索引字段)场景下4.0.13的 QPS 比7.5.510.8%左右。


  • 100 并发



下图是 4.0.13 版本 100 并发测试 update(非索引字段)的监控。


process-info.png


下图是 7.5.5 版本 100 并发测试 update(非索引字段)的监控


process-info.png


在 100 并发的更新(非索引字段)场景下4.0.13的 QPS 比7.5.56.1%左右。


  • 200 并发



下图是 4.0.13 版本 200 并发测试 update(非索引字段)的监控。


process-info.png


下图是 7.5.5 版本 200 并发测试 update(非索引字段)的监控


process-info.png


在 200 并发的更新(非索引字段)场景下4.0.13的 QPS 比7.5.54.2%左右。


可以发现4.0.13版本更胜一筹,但是随着并发数的增加,4.0.137.5.5的差距越来越小。

(4)oltp_update_index
  • 50 并发



下图是 4.0.13 版本 50 并发测试 update(索引字段)的监控。


process-info.png


下图是 7.5.5 版本 50 并发测试 update(索引字段)的监控。


process-info.png


在 50 并发的更新(索引字段)场景下4.0.13的 QPS 比7.5.56.4%左右。


  • 100 并发



下图是 4.0.13 版本 100 并发测试 update(索引字段)的监控。


process-info.png


下图是 7.5.5 版本 100 并发测试 update(索引字段)的监控


process-info.png


在 100 并发的更新(索引字段)场景下4.0.13的 QPS 比7.5.50.9%左右。


  • 200 并发



下图是 4.0.13 版本 200 并发测试 update(索引字段)的监控。


process-info.png


下图是 7.5.5 版本 200 并发测试 update(索引字段)的监控


process-info.png


在 200 并发的更新(索引字段)场景下7.5.5的 QPS 比4.0.133.2%左右。


可以发现在 200 并发之前4.0.13版本更胜一筹,但是随着并发数的增加,4.0.137.5.5的差距越来越小,甚至在达到 200 并发后出现了反超。

(5)oltp_insert
  • 50 并发



下图是 4.0.13 版本 50 并发测试写入的监控。


process-info.png


下图是 7.5.5 版本 50 并发测试写入的监控。


process-info.png


在 50 并发的只写场景下7.5.5的 QPS 比4.0.1331.05%左右。


  • 100 并发



下图是 4.0.13 版本 100 并发测试写入的监控。


process-info.png


下图是 7.5.5 版本 100 并发测试写入的监控。


process-info.png


在 100 并发的只写场景下7.5.5的 QPS 比4.0.1331.67%左右。


  • 200 并发



下图是 4.0.13 版本 200 并发测试写入的监控。


process-info.png


下图是 7.5.5 版本 200 并发测试写入的监控。


process-info.png


在 200 并发的只写场景下7.5.5的 QPS 比4.0.1323.6%左右。


可以发现7.5.5版本更胜一筹,但是随着并发数的增加,4.0.137.5.5的差距越来越小。

三、监控情况

1、prepare 阶段

(1)prepare 阶段总共耗时

创建 32 张表,每张表 1000w 数据量,各版本耗时分别如下。


(2)prepare 阶段集群 Duration 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(3)prepare 阶段集群 Transaction Duration 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(4)prepare 阶段 tikv CPU 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(5)prepare 阶段 tikv IO Util 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(6)prepare 阶段 tikv IOPS 监控
  • 4.0.13


process-info.png


没有合并的图形,其他两个节点的 iops 也差不多这个监控走势。


  • 7.5.5


process-info.png
(7)prepare 阶段 tikv 内存监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(8)prepare 阶段 tidb 节点的内存监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(9)prepare 完成后集群大小
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png

2、run 阶段

(1)run 阶段集群 Duration 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(3)run 阶段集群 Transaction Duration 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(4)run 阶段 tikv CPU 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(5)run 阶段 tikv IO Util 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(6)run 阶段 tikv IOPS 监控
  • 4.0.13


process-info.png


没有合并的图形,其他两个节点的 iops 也差不多这个监控走势。


  • 7.5.5


process-info.png
(7)run 阶段 tikv 内存监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(8)run 阶段 tidb 内存监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png
(9)run 阶段 QPS/TPS 监控
  • 4.0.13


process-info.png


  • 7.5.5


process-info.png

四、总结

从测试结果来看,oltp_point_selectoltp_update_non_index两个场景下4.0.13更胜一筹,oltp_read_writeoltp_insert两个场景下7.5.5更胜一筹,oltp_update_index场景则是在50 100两个并发更胜一筹,在200并发下,7.5.5反超。


并发高于200的场景,7.5.5 的成绩可能会更好,但是感觉意义不是很大,正常各业务不太可能有那么高的并发数,200并发应该能覆盖90%的业务了。


从结果看,7.5.5版本在压测期间CPU 内存的使用情况都比4.0.13更高,而QPS TPS并没有比4.0.13更好,甚至有些场景不如4.0.13,所以似乎并没有被惊艳到。


对这个测试结果有些意外,不太相信新版本的成绩是这样的不堪,不知道是这个测试流程有问题还是有什么细节没注意到。当然基准测试跟业务的实际流量还是有差别的,业务实际流量更像是混合读写的场景,在该场景下,7.5.5还是略强一些的,但也仅仅是略胜一筹而已。


另外值得一提的是,7.5.5的压缩比应该是强于4.0.13,相同数据量的情况下,前者磁盘占比大概是后者的65%左右。


如果想升级新版本的小伙伴建议还是慎重一些,按需升级,如果是旧版本没有遇到什么问题还是不建议轻易尝试升级吧。


比如7.5.5版本大表加索引可能会遇到意想不到的问题。 https://tidb.net/blog/b2ddded3


以上仅供参考。


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
tidb 4.0.13 VS 7.5.5,基准测试结果有点意外_性能测评_TiDB 社区干货传送门_InfoQ写作社区