本文提供 TDSQL MySQL版 分片与开源 MySQL(未经优化)的性能对比,用于做对比参考。
对比测试环境
硬件:CPU 24core、内存128GB、磁盘1.8TB SSD
网络环境:局域网,平均网络延迟0.80ms
操作系统:CentOS 7.0
数据量:10张表,每张表2180000行,每张表数据量约5.2GB,innodb buffer:30GB
开源版本:MySQL 5.7.17 社区版(未经优化,开启半同步)
TDSQL MySQL版 分片版本: MySQL5.7(开启强同步),默认开启线程池,参数如下:
thread_pool_max_threads=2000
thread_pool_oversubscribe = 10
thread_pool_stall_limit = 50
thread_handling = 2
对比测试详细数据
1. 数据初始化参数
create database caccts ;./sysbench --num-threads=500 --test=./tests/db/oltp.lua.bak --oltp-table-size=2180000 --oltp-tables-count=10 --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --oltp-index-updates=1 --oltp-non-index-updates=0 --report-interval=1 --mysql-user=xxxxxx --mysql-password=xxxxxx --mysql-host=xxxxxx --mysql-db=caccts --max-time=360000 --max-requests=2000000000 prepare
2. 非索引更新(update)
./sysbench --num-threads=500 --test=./tests/db/update\\_non\\_index.lua --oltp-table-size=2180000 --oltp-tables-count=10 --percentile=99 --report-interval=1 --mysql-host=xxxx --mysql-user=xxx --mysql-password=xxx --mysql-db=caccts --max-time=360000 --max-requests=2000000000 --mysql-port=3306 run
3. 只读(select)
./sysbench --num-threads=500 --test=./tests/db/select.lua --oltp-table-size=2180000 --oltp-tables-count=10 --percentile=99 --report-interval=1 --mysql-host=xxxx --mysql-user=xxx --mysql-password=xxx --mysql-db=caccts --max-time=360000 -- max-requests=2000000000 --mysql-port=3306 run
4. 混合测试
./sysbench\\_orig --num-threads=500 --test=./tests/db/oltp\\_new.lua --oltp-read-only=off --oltp-table-size=2180000 --oltp-tables-count=10 --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp-sum-ranges=0 --oltp-order-ranges=0 --oltp-distinct-ranges=0 --oltp-index-updates=1 --oltp-non-index-updates=0 --percentile=99 --report-interval=1 --mysql-host=xxxx -- mysql-user=xxx --mysql-password=xxx --mysql-db=caccts --max-time=360000 --max-requests=2000000000 --mysql-port=3306 run
读请求(read)测试结果
并发 | 版本 | qps | 平均响应时间(ms) | 99%响应时间(ms) |
50 | 开源 MySQL | 304585 | 0.16 | 0.26 |
50 | TDSQL MySQL版 | 330695 | 0.15 | 0.24 |
100 | 开源 MySQL | 407443 | 0.24 | 0.48 |
100 | TDSQL MySQL版 | 484640 | 0.2 | 0.72 |
200 | 开源 MySQL | 433401 | 0.57 | 1 |
200 | TDSQL MySQL版 | 498215 | 0.55 | 1.22 |
500 | 开源 MySQL | 428542 | 1.16 | 2.42 |
500 | TDSQL MySQL版 | 494874 | 1.01 | 2.61 |
1000 | 开源 MySQL | 412775 | 2.4 | 6.3 |
1000 | TDSQL MySQL版 | 478393 | 2.08 | 4.21 |
写请求(write)测试结果
并发 | 版本 | qps | 平均响应时间(ms) | 99%响应时间(ms) |
50 | 开源 MySQL | 14816 | 3.37 | 4.82 |
50 | TDSQL MySQL版 | 28925 | 1.73 | 2.55 |
100 | 开源 MySQL | 25046 | 3.99 | 6.91 |
100 | TDSQL MySQL版 | 43466 | 2.3 | 4 |
200 | 开源 MySQL | 32690 | 6.12 | 10.86 |
200 | TDSQL MySQL版 | 54045 | 3.7 | 7.27 |
500 | 开源 MySQL | 37192 | 13.44 | 21.1 |
500 | TDSQL MySQL版 | 70370 | 7.25 | 15.52 |
1000 | 开源 MySQL | 35447 | 28.2 | 40.47 |
1000 | TDSQL MySQL版 | 69890 | 14.35 | 30.73 |
混合场景(OLTP 测试)测试结果
并发 | 版本 | qps | 平均响应时间(ms) | 99%响应时间(ms) |
50 | 开源 MySQL | 63806 | 4.7 | 7.13 |
50 | TDSQL MySQL版 | 162883 | 1.84 | 3.45 |
100 | 开源 MySQL | 102516 | 5.85 | 11.4 |
100 | TDSQL MySQL版 | 173974 | 3.58 | 6.64 |
200 | 开源 MySQL | 124550 | 9.64 | 18.92 |
200 | TDSQL MySQL版 | 208128 | 5.76 | 11.9 |
500 | 开源 MySQL | 125386 | 23.93 | 39.68 |
500 | TDSQL MySQL版 | 232543 | 13.58 | 27.81 |
1000 | 开源 MySQL | 121765 | 49.29 | 80.71 |
1000 | TDSQL MySQL版 | 226130 | 27.76 | 54.78 |