1、什么是基准测试
基准测试是一种测量和评估软件新能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响。基准测试时针对系统的一种压力测试。
压力测试需要针对不同主题,所使用的数据和查询也是真实用到的
基准测试可能不关心业务逻辑,所使用的查询和1业务的真实性可以和业务环境没关系
2、基准测试的目的
建立mysql服务器的性能基准线,确定当前mysql服务器运行情况
模拟比当前系统更高的负载,找出系统的扩展瓶颈,增加数据库并发,观察QPS,TPS变化,确定并发量与性能最优的关系。
测试不同的硬件、软件和操作系统配置
证明新的硬件设备是否配置正确
3、如何进行基准测试
(1)对整个系统进行基准测试
优点:能够测试整个系统的性能,包括web服务器缓存、数据库等,能反映出系统中各个组件接口间的性能问题,体现真实情况
缺点:测试复杂,消耗时间长
(2)单独对mysql进行测试
优点:测试简单,消耗时间短。
缺点:无法全面了解整个系统的新能基线
4、mysql基准测试的常见指标
TPS:单位时间内处理的事务数量
QPS:单位时间内处理的查询数量
响应时间:最大、最小相应时间,各个时间所占百分比
并发量:同时处理的查询请求的数量
5、基准测试工具
(1)mysql自带的工具:mysqlslap
特点:可以模拟服务器负载,并输出相关统计信息
可以指定自动生成查询语句
常用参数:
--auto-generate-sql 由系统生成相应sql
--auto-generate-sql-add-autoincrement 在生成的表中添加自增id
--auto-generate-sql-load-type 指定测试中使用的查询类型【读写删除查询等】
--auto-generate-sql-write-number 指定初始化数据时初始化数据量
--concurrency 指定并发线程数量
--engine 指定要测试的表使用的存储引擎
--no-drop 指定不清理测试数据
--create-schema 指定测试的数据库
--iterations 指定测试运行的次数
--numbr-of-queries 指定每个线程执行的查询数量
--debug-info 指定输出额外的内存以及cpu统计信息
例1:测试100个并发线程,测试次数1次,自动生成sql脚本,读、写、更新混合测试,自增长字段,测试引擎是innodb,运行5000次sql
平均每个sql花费64.125s
100个客户端同时运行这些sql
每个客户端平均同时运行50次sql
例2:测试100个,500个,1000个并发线程,测试次数1次,自动生成sql脚本,读、写、更新混合测试,自增长字段,测试引擎是innodb,运行5000次sql,并且额外输出cpu和内存信息(我的mysql5.7版本不支持--debug-info这个参数,)
我的电脑性能不太行,处理1000个并发就不行了
(2)sysbench测试工具
安装地址:https://github.com/akopytov/sysbench/archive/0.5.zip
unzip sysbench-0.5.zip
cd sysbeench
./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib/
make && make install
sysbench常用参数
--test 用于指定索要进行的测试类型。【fileio,cpu,memory,oltp】
--mysql-db 用于指定执行测试的数据库名
具体测试详细过程:https://www.cnblogs.com/conanwang/p/5910079.html