高性能MySql学习笔记第二章:MySQL 基准测试

一、基准测试的策略

基准测试有两种主要的策略,一是针对整个系统的整体测试,另外是单独测试MySQL。这两种策略也被称为集成式和单组件式基础测试。

  • 测试指标
  1. 吞吐量:吞吐量是指单位时间内的事务处理数。这类基准测试主要针对在线事务处理的(OLTP)吞吐量,常用的测试单位每秒事务数(TPS)或每分钟事务数(TPM),常见的标准有TPC-C。
  2. 响应时间或延迟:这个指标用于测试任务所需的整体时间。,通常可使用百分比相应时间来替代最大响应时间,比如PCT95,PCT99等。
  3. 并发性:并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数或者连接数。当并发性增加时,需要策略吞吐量是否下降,响应时间是否变长。可以通过sysbench指定32、64或128个线程的测试,然后在测试期间记录MySQL数据库的Threads_running状态值。
  4. 可拓展性:可拓展性是指,给系统增加一倍的工作,在理想情况下就能获得两倍的结果(即吞吐量增加一倍)。或者说给系统增加一倍的资源(比如两倍的CPU),就可以获得两倍的吞吐量。同时性能(响应时间)也必须在可接受的范围内。

二、基准测试的方法

  • 规划基准测试的第一步是提出问题并明确目标,然后决定是采用标准的基准测试还是设计专用的测试。如果是采用标准的基准测试,应该确认选择了合适的测试方案。例如,不要使用TPC-H测试电子商务系统,因为TPC-H是即席查询和决策支持型应用的基准测试,不适合用来测试OLTP系统。
  • 执行基准测试时,需要记录系统状态和性能指标,比如CPU利用率,磁盘IO,网络流量,SHOW GLOBAL STATUS 计数器等。
  • SHOW ENGINE INNODB STATUSSHOW FULL PROCESSLIST

三、基准测试的工具

  • 集成式测试工具
  1. ab: ab是一个apache HTTP服务器基准测试工具。可以测试HTTP服务器每秒可以满足多少请求。
  2. http_load: 和ab类似,但是比ab更加灵活,具有更多功能。
  3. JMeter: 设计用来测试web应用,也可以用于测试FTP服务器,或者通过JDBC进行数据库查询测试。
  • 单组件式测试工具
  1. mysqlslap: 可以模拟服务器的负载,并输出计时信息。它包含在MySQL5.1的发行包中,在MySQL4.1之后都可以使用。
  2. MySQL Benchmark Suite(sql-bench): MySQL发行包中一款自带的基准测试套件,可以在不同数据库服务器上进行比较测试。好处在于包含了大量预先定义的测试,容易使用。缺点则有很多限制,比如:单用户、测试数据集小、单线程串行执行。
  3. Super Smack: 一款用于MySQL和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。
  4. Database Test Suite: 由开源软件开发实验室(OSDL)设计,一款类似某些工业标准测试的测试工具集,其中的dbt2就是一款免费的TPC-C OLTP测试工具(未认证)。
  5. sysbench: 一款多线程系统压测工具。
  6. BENCHMARK()函数: MySQL内置函数,可以测试某些特定操作的执行速度,参数是需要执行的表达式和执行次数。

如果刚刚接触基准测试,至少应该熟悉sysbench

原文地址:https://www.cnblogs.com/lianggx6/p/14240668.html