第二章 MySQL基准测试
基准测试是Mysql新手和专家都要掌握的基本技能,是针对系统设计的一种压力测试。通常是为了掌握系统的行为,重现某个状态,或是做新硬件的可靠性测试。
2.1 WHY基准测试
创造虚拟环境,为了观察系统在不同压力下的行为。
- 验证假设
- 重现并解决系统异常行为
- 模拟更高的负载,找出可能遇到的瓶颈问题
- 测试应用适应可变环境的能力
- …
2.2 基准测试的策略
需要模拟大量的用户和数据!
- 针对整个系统的整体测试,也叫集成式测试
- 单独测试Mysql,也叫单组件式。
why整体测试
- 测试整个系统,Web服务器,应用代码,网络和数据库。用户更加关注整个整体的性能;
- 通过整体测试发现各部分之间的缓存带来的问题;
- Mysql并非总是应用 的瓶颈,通过整体测试可以发现这一点;
- 更能揭示应用整体的真实表现,组件式测试很难发现这点;
why单独测试MySQL
- 需要比较不同的schema或查询的性能;
- 针对应用中某个具体问题的测试;
- 避免漫长的基准测试,通过短期的基准测试,做快速的“周期循环”,–>检查出某些调整的效果;
测试指标
- 吞吐量
- 响应时间或延迟
- 并发性
- 可扩展性
需要尽可能的收集用户需求,测试的都是用户最关心最重要的指标。
2.3 基准测试方法
- 提出问题并明确目标,选择标准的还是专业的基准测试
- 获得生产数据集的快照,要求方便还原,以便后续测试
- 针对数据运行查询,选择高峰时段或多个时间段
- 在不同级别记录请求,多线程!
- 建立将参数和结果文档化事务的规范
2.4 基准测试工具
集成式:ab、http_load、JMeter…
单组件式:mysqlslap、MySQL Benchmark Suite(sql-bench)、sysbench…
MySQ中自带的benchmark函数
可以简单返回服务器执行表达式的时间,不会涉及到优化分析。不适合做真正的基准测试,因为很难理解到真正要测试的是什么,而且测试的也只是整个执行周期中的一小部分。
2.5 总结
作为Mysql的使用者,我们需要对基准测试有一定的了解,这也更是一种很好的学习方法,需要我们敏捷的思维能力发现问题,学习mysql的基准测试能让我们学会如何将问题分解,清晰我们的思路,成为一名更好的mysql使用者。
,需要我们敏捷的思维能力发现问题,学习mysql的基准测试能让我们学会如何将问题分解,清晰我们的思路,成为一名更好的mysql使用者。