Mysql基准测试

简介:基准测试(benchmark)是针对系统设计的一种压力测试,通常为了掌握系统的行为,或重现某个系统状态,或做新硬件的可靠性测试
测试工具:sysbench

为什么要基准测试

基准测试时唯一方便有效的、可以学习系统在给定的工作负载下会发生什么的方法。基准测试可以在系统实际负载之外创造一些虚构的场景进行测试

  • 验证基于系统的假设,确定假设是否符合实际情况
  • 重现系统中的某些异常行为,以解决这些异常
  • 测试系统当前的运行情况
  • 模拟比当前系统更高的负载
  • 规划未来业务的增长
  • 测试应用适应可变华景的能力
  • 测试不同的硬件、软件和操作系统的配置
  • 证明新采购的设备是否配置正确
  • 应用创建单元测试套件

基准测试策略

有两种主要的策略:1.针对整个系统的整体测试(集成式(full-stack));2.单独测试Mysql(单租件式(single-component))

集成式:

  • 测试整个应用系统,包括web服务器,应用代码整体性能等
  • Mysql并非总是应用的瓶颈
  • 只有针对整体测试,才能发现各部分之间的缓存带来的影响
  • 整体应用的测试能更真实的揭露系统的表示

单组件式:

  • 需要比较不同的schema或查询的性能
  • 针对应用的某个问题的测试
  • 避免漫长的基准测试

测试指标

吞吐量

吞吐量指的是单位时间内的事物处理数量,经典的数据库应用测试指标,测试单位 每秒事物数(TPS) 每分事物数(TPM)

响应时间或延迟

这个指标测试任务所需的整体时间,通畅使用百分比时间来替代最大响应时间。测试结果使用图表表示更容易理解

并发性

应该测试在任意时间有多少同时发生的并发请求,而非在线数

可扩展性

可扩展性帮助发现当前系统的瓶颈

指标测试应当遵循实际业务情况,而非只关心某几种指标的性能

基准测试方法

1设计和规划基准测试

a.标准的基准测试 b.设计专业的测试

  • 测试时应当详细的写下测试规划,记录测试数据、系统配置的步骤,如何测量和分析结果,以及预热的方案等。
  • 建立将参数和结果文档化的规范,每一轮测试都必须进行详细记录

2获取系统的性能和状态

执行基准测试时需要尽可能多收集被测试系统的信息。最好为基准测试建立一个目录,并且没执行一轮测试都创建单独的子目录,将测试结果、配置文件、测试指标、脚本和其他相关说明多保存在其中。

  • 可以采取脚本方式定时获取系统状态并记录

基准测试工具

集成式测试工具

ab

ab是Apache HTTP服务器基准测试工具,可以测试http服务器每秒多少请求,只能针对单个URL进行尽可能快的压力测试

http_load

和ab类似,比ab灵活,可以通过一个输入文件提供多个url,load在这些url中随机算则进行测试,也可以定制http_load,使其按照时间比率进行测试

参数 含义
-parallel 简写-p 含义是并发的用户进程数。
-fetches 简写-f 含义是总计的访问次数
-rate 简写-p 含义是每秒的访问频率
-seconds简写-s 含义是总计的访问时间

举个栗子:http_load -p 20 -s 10 urls.txt
返回结果:
500 fetches, 20 max parallel, 92500 bytes, in 10 seconds
185 mean bytes/connection
50 fetches/sec, 9250 bytes/sec
msecs/connect: 193.104 mean, 233.949 max, 184.651 min
msecs/first-response: 194.718 mean, 211.365 max, 186.773 min HTTP response codes:
code 200 -- 49

结果说明

1.500 fetches, 20 max parallel, 92500 bytes, in 10 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是92500 bytes,运行的时间是10.0148秒
2.185 mean bytes/connection
说明每一连接平均传输的数据量92500/500=185
3.50 fetches/sec, 9250 bytes/sec
说明每秒的响应请求为50,每秒传递的数据为9250 bytes/sec
4.msecs/connect: 193.104 mean, 233.949 max, 184.651 min
说明每连接的平均响应时间是93.104 msecs,最大的响应时间233.949 msecs,最小的响应时间184.651 msecs
5.msecs/first-response:194.718 mean, 211.365 max, 186.773 min
6、HTTP response codes: code 200 -- 49
说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
特殊说明:这里,我们一般会关注到的指标是fetches/sec、msecs/connect
他们分别对应的常用性能指标参数
Qpt-每秒响应用户数和response time,每连接响应用户时间。

测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论

JMeter

JMeter是一个java应用程序,可以加载其他应用并测试其性能,可测试web应用,ftp服务器或JDBC数据库查询测试等。

  • 可以控制预热时间
  • 更加灵活的模拟真实用户访问
  • 拥有绘图接口
  • 能够对测试进行记录
  • 离线重演测试结果

单组件式测试工具

mysqlslap

可模拟服务器负载,并输出计时信息,在Mysql发行包中,测试时可以执行并发连接数,并制定sql语句

Mysql Benchmark Suite(sql-bench)

用于不同数据库服务器上进行比较测试,单线程,主要用于测试服务器的查询速度。结果会显示那种类型的操作在服务器上执行更快。缺陷较多

Super Smack

基于Mysql和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。可以模拟多用户访问、加载测试数据到数据库,并支持使用随机数据填充测试表,测试定义在“smack”文件中,它使用一种加单的语法定义测试的客户端、表、查询等测试要素。

Database Test Suite

偏工业标准的测试工具集

sysbench

多线程系统压测工具,它可以根据影响数据库服务器性能的各种因素来评估系统的性能。支持Mysql、操作系统和硬件的测试

  • 测试文件I/O
  • 测试操作系统调度器
  • 测试内存分配、传输速度
  • 测试POSIX线程
  • 测试数据库服务等

你可能感兴趣的:(Mysql基准测试)