MySQL基准测试
定义:针对系统进行的压力测试。
直接,简单,易于比较!用于评估服务器处理数据的能力。
测试目的
- 建立MySQL服务器性能的基准线
- 模拟比当前系统更高的负载,找出系统的瓶颈
- 测试不同的硬件、软件和操作系统配置。
- 证明新的设备是否配置正确
如何测试
对整个系统进行基准测试
从系统的入口进行测试。
优点:
- 能测试这个系统的性能,包括web、缓存、数据库、等等
- 能反应出系统各个组件接口的性能问题
缺点:
- 测试设定复杂,时间耗费长
单独对MySQL进行测试
优点
- 测试简单,测试时间短。
缺点
- 无法全面了解整个系统。
MySQL基准测试的常见指标
- 单位时间内所处理的事物数(TPS)
- 单位时间内所处理的查询数(QPS)
- 响应时间
- 平均响应时间、最小响应时间、最大响应时间、各时间所占比
- 并发量:同时查询请求的数量
基准测试步骤
计划和设计基准测试
- 对整个系统某一个主键
- 使用什么样的数据
- 准备测试数据,以及数据收集脚本
- CPU使用率,IO,网络流量、状态计数器信息等
- 运行基准测试
保存及分析基准测试的脚本
常用的基准测试的工具
mysqlslap
下载和安装:和mysql一起下载安装
特点:
可以模拟服务器负载,并输出相关统计信息
可以指定也可以自动生成查询语句
常用的参数说明:
- --auto-generate-sql 有系统自从生成sql脚本进行测试
- --auto-generate-sql-add-autoincrement 在生成的表中增加自增IF
- --auto-generate-sql-load-type 指定测试中查询的类型
- --auto-generate-sql-load-write-number 初始化数据时生成的数据量
- -- concurrency 指定并发线程的数量
- --engine 指定要测试的表的引擎,可以用逗号分隔多个引擎
- --no-drop 指定不清理测试数据
- --iterations 指定测试运行的次数
- --number-of-queries 指定每一个线程查询的数量
- --debug--info 指定输出额外的内存以及CPU统计信息
- --number-int-clos 指定表中包含INT的数量
- --number-char-clos 指定表中包含varchar的数量
- --create-schema 指定了执行数据库测试的数据库的名字
- --query 用于指定自定义的sql脚本
- --only-print 把生成的脚本打印出来,不会运行
sysbench
是一个多线程的测试工具
安装:
1.在githup上下载
2.编译、配置(指定mysql目录)、安装