数据库的关键性能指标用于获取服务状态信息,可以便于管理员清晰的知道服务状态。数据库基准测试是为系统建立一个性能基准,当系统环境发生变化时根据之前的基准再进行一次测试可以看出变化对性能的影响,以便在早期发现性能问题。由于MySQL对数据一致性有高要求,对于写数据带来的压力没办法像Web应用一样方便的实现水平扩展,所以对MySQL的基准测试可以分析当前配置下数据库的性能表现,找出性能阈值。基准测试不关心业务逻辑,数据不要求真实。MySQL常用的基准测试工具有MySQL官方mysqlslap、第三方工具sysbench、tpcc等。
一、数据库关键性能指标
· QPS——每秒请求查询数
在数据库状态信息中Questions用于查看数据库处理的请求数,由于该值是递增状态,所以可以通过mysqladmin命令来进行计算,获取到每秒查询数
mysqladmin -uroot -p123456 -r -i 1 extended-status | grep “Questions”
# -i 指定间隔时间为1秒
# -r 显示本次与上次数据差值
· TPS——每秒事务处理数
数据库每秒处理的事务数量,因为每个事务提交的数据量大小是不同的,所以除非一些特定的场景,否则TPS的统计并不能反映太多问题。TPS的计算案例:如1000个用户进行请求,平均5秒响应,TPS为200;1000个用户进行请求,平均1秒响应,TPS为1000。假设一个交易系统峰值为800万笔/天,后续5年按照每年20%增长,那么5年后的业务峰值total为800万*(120%)*(120%)*(120%)*(120%)*(120%),按照二八原则80%的交易发生在20%的时间段,每天交易时间以12个小时计算,最终测试目标TPS需要达到(total*0.8)/(0.2*3600*12)
#TPS计算公式为(Com_commit +Com_rollback) / seconds
mysql > show global status like ‘Com_commit’;
mysql > show global status like ‘Com_rollback’;
mysqladmin -uroot -p123456 -r -i 1 extended-status | grep -v “Com_rollback_to_savepoint” |grep -E “Com_commit|Com_rollback”
·并发数
关注最大连接数以及当前工作的线程数,如果慢查询多了通常并发就会变高,性能会受到影响