- mysql版本: 5.6
- sysbench: 1.0.17
- 系统: centos 7(4核8G) SSD
sysbench安装: yum install sysbench -y
跑测试需要用到lua脚本,不想自己写可以用官方的脚本
git clone https://github.com/akopytov/sysbench.git
1、测试只读性能
- 准备数据: sysbench /root/sysbench/src/lua/oltp_read_only.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=100000 --range_selects=off --db-ps-mode=disable --report-interval=1 prepare
- 运行测试: sysbench /root/sysbench/src/lua/oltp_read_only.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=100000 --range_selects=off --db-ps-mode=disable --report-interval=1 run
- 清理数据: sysbench /root/sysbench/src/lua/oltp_read_only.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=100000 --range_selects=off --db-ps-mode=disable --report-interval=1 cleanup
2、测试读写性能
- 准备数据: sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=1000000 --report-interval=1 prepare
- 运行数据: sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=1000000 --report-interval=1 run
- 清理数据: sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=10 --events=0 --time=300 --mysql-host=xxx --mysql-user=root --mysql-password=password --mysql-port=3306 --tables=20 --table-size=1000000 --report-interval=1 cleanup
备注: 测试的并发数(threads)和表的大小(table-size)均会影响测试结果,建议设置多个值排列组合进行测试
例: table-size=100000/50000/1000000 threads=10/20/30
table-size变化了之后需要重新cleanup和prepare数据,threads则不用
单表10W数据下的性能
操作 | 并发 | QPS | TPS | Latency | 95% latency |
---|---|---|---|---|---|
读 | 10 | 36.7k | 3k | 3.3ms | 4.7ms |
读 | 20 | 43.3k | 3.6k | 5.5ms | 12.5ms |
读 | 30 | 35.8k | 3k | 10.1ms | 38.9ms |
读写 | 15 | 7.9k | 396 | 37.8ms | 125.5ms |
读写 | 20 | 7.9k | 396 | 50.4ms | 147.6ms |
读写 | 25 | 9.4k | 472 | 53ms | 142.4ms |
读写 | 30 | 9.3k | 467 | 64.3ms | 150.3ms |
单表50W数据下的性能
操作 | 并发 | QPS | TPS | Latency | 95% latency |
---|---|---|---|---|---|
读 | 5 | 22k | 1.8k | 2.7ms | 3.4ms |
读 | 10 | 36k | 3k | 3.3ms | 4.7ms |
读 | 15 | 39k | 3.3k | 4.6ms | 8.4ms |
读 | 20 | 34k | 2.8k | 7.1ms | 27.2ms |
读写 | 5 | 1.7k | 84.8 | 58.9ms | 142.4ms |
读写 | 10 | 2.7k | 134.1 | 74.5ms | 150.3ms |
读写 | 15 | 3.25k | 162.5 | 92ms | 248.8ms |
读写 | 20 | 3.4k | 169 | 118.2ms | 331.9ms |
读写 | 25 | 3.7k | 184.9 | 135ms | 419.5ms |
单表100W数据下的性能
操作 | 并发 | QPS | TPS | Latency | 95% latency |
---|---|---|---|---|---|
读 | 5 | 21k | 1.75k | 2.95ms | 3.75ms |
读 | 10 | 35.5k | 2.96k | 3.4ms | 4.65ms |
读 | 15 | 38k | 3.2k | 4.7ms | 8.4ms |
读 | 20 | 34k | 2.8k | 7.1ms | 27.2ms |
读写 | 5 | 1374 | 68.7 | 72.7ms | 164.5ms |
读写 | 10 | 1940 | 97 | 103.1ms | 277.2ms |
读写 | 15 | 2188 | 109.4 | 136.9ms | 376.5ms |
读写 | 20 | 2619 | 131 | 152.5ms | 412ms |
Mysql基准性能小结:
表大小 | 操作 | QPS | TPS | Latency | 95% latency |
---|---|---|---|---|---|
10W | 读 | 43.3k | 3.6k | 5.5ms | 12.5ms |
10W | 读写 | 9.4k | 472 | 53ms | 142.4ms |
50W | 读 | 39k | 3.3k | 4.6ms | 8.4ms |
50W | 读写 | 3.25k | 162.5 | 92ms | 248.8ms |
100W | 读 | 38k | 3.2k | 4.7ms | 8.4ms |
100W | 读写 | 1940 | 97 | 103.1ms | 277.2ms |