数据库性能 mysql5.7:
最大连接数:默认151 ,可以通过max_connections进行设置
qps 四核 16g :二到三万
tps 四核 16g : 一千左右
压测工具:Sysbench
参考数据:华为云https://support.huaweicloud.com/pwp-rds/rds_swp_mysql_03.html
prepare 阶段必须要插入数据 --table-size=1
--mysql-debug=on 会打印sql
-table_size=N Number of rows per table [10000]
查看具体帮助文档:
sysbench /usr/share/sysbench/oltp_write_only.lua help
使用一条语句插入多个值的方式,可以极大速度的优化插入速度
插入测试:总时间180s oltp_insert
单线程 (单实例):
本地:
命令:
sysbench /usr/share/sysbench/oltp_read_write.lua --time=30 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=bigData --tables=1 --threads=1 --table-size=1000000 prepare
结果:
耗时ms:min:0.56 avg:0.82 max:23.86
qps:1219.18 per sec
多线程 :
本地:
结果(8线程):
qps: 4325.00 per sec
耗时:percentile: 2.61ms
结果(16线程):
qps: 11708.61 per sec
耗时: 95th percentile: 2.07ms
结果(32线程):
qps:12852.14 per sec
耗时:95th percentile: 9.39ms
查询测试(针对mysalm 保留):/oltp_point_select.lua
单线程:
本地:
qps:10297.42 per sec
耗时:min: 0.07 avg: 0.09 max: 3.99 95th percentile: 0.13 sum: 29285.34
多线程:
本地(8):
qps:37304.01 per sec
耗时:min:0.12; avg:0.21; max:6.77; 95th percentile:0.25;
本地(16):
qps:40052.05 per sec
耗时: 95th percentile: 0.46
读写混合测试 oltp_read_write
单线程:
查询qps:5006.37 per sec
事务 tps:250.32 per sec
耗时:95th percentile: 4.91
多线程:
线程 8:
查看 qps: 23290.32 per sec
事务 tps: 1163.86 per sec
耗时: 95th percentile: 9.39
线程 16:
查看 qps: 26955.27 per
事务 tps: sec1345.96 per sec
耗时: 95th percentile: 16.41
总结:
本地实际测试 ,与华为云相比 ,同时存在插入读取情况时,tps和qps相差不多,tps 1200左右,qps25000左右;单独插入和查询时,各自qps 会存在其他幅度的上涨,tps5倍,qps一到两倍;tps倍数增大的原因大概率时是因为 oltp_read_write脚本中 每个事务会执行多条增删语句;
代码级别
- 插入速度,单线程 10s 一万数据
- 批量 batch 多value 0.5s 一万