【MySQL】MySQL基准测试方法
基准测试(benchmark),是针对系统设计的一种压力测试。主要介绍MySQL与基于MySQL应用的基准测试的策略和工具。讨论MySQL基准测试工具sysbench的使用。
TPS(每秒的事务数)
1 基准测试的策略
基准测试两种策略:一是针对整个系统的整体测试,二是单独测试MySQL。
也被称为集成式(full-stack)以及单组件式(single-component)基准测试。
采用方式一原因:(针对整个系统做集成测试,而不是单独测试MySQL)
(1)测试整个应用系统,包括web服务器、应用代码、网络、数据库。
(2)MySQL并非总是应用的瓶颈
(3)只有对应用整体测试,才会发现各部分的缓存影响
(4)整体测试更接近真实表现
但是要注意整体的基准测试很难建立,也很难正确设置,如果设计有问题,就无法模拟真实情况,基于此做的决策也可能是错误的。
采用方式二原因:(只关注MySQL性能 项目初期可以这样做)
(1)比较不同的schema或查询的性能
(2)针对应用中某个具体问题测试
(3)避免漫长基准测试,做一个短期基准测试。
如果可以在真实数据集上执行重复查询,那么mysql基准测试也是有用的,但数据与数据集大小应该是真实的,如果可能可以用生产环境的数据快照。
在设置一个基于真实数据的基准测试 复杂而且耗时。而且如果要测试的是一个刚刚开发的应用,只有很少的用户数据,如果想测试应用扩张后性能表现,只能通过模拟大量数据和压力来进行。
2 测试指标
测试指标:针对延迟、吞吐量需要不同的测试方法。
(1)吞吐量
吞吐量是单位时间内的事务处理数。
(2)响应时间或延迟
这个指标用于测试任务所需的整体时间。
(3)并发性
正在工作中的并发操作,或是同时工作中线程数或连接数。当并发增加时,需要策略吞吐量是否下降,响应时间是否变长。
(4)可扩展性
可扩展性指给系统增加一倍的工作理想情况下可以获得两倍的结果(吞吐量增加一倍)。或者给系统增加一倍的资源,可以获得两倍的吞吐量,同时响应时间可以在可以接收的范围内。大多数系统无法做到理想的线性扩展,压力增大吞吐量与性能都会越来越差。