前言
上面一篇简单介绍了Mysql的架构以及历史背景,这一篇介绍主要介绍MySQL的基准测试,首先就要知道什么是基准测试。
- 基准测试(benchmarking):是一种测量和评估软件性能指标的活动。
通俗点说就是测试我们写的SQL性能是否比较合适,这样方便我们去修改我们的SQL,能够提高系统的性能。
以后每章都会写上我的版本
项 | 版本号 | 说明 |
---|---|---|
Mysql | 5.6.37 MySQL Community Server (GPL) | 5.0以上版本即可 |
2.1、基准测试作用
- 可以提前测试新系统在不同压力下的行为,评估系统容量,观察系统如何处理不同数据,观察系统异常行为,测试硬件是否满足要求,软硬件配置是否正确。
- 测试系统当前运行情况。
- 模拟更高的负载,判断可能遇到的性能瓶颈,规划未来业务增长。
注意事项
- 它不是完全真实的压力测试,真实的压力是不可预期并且变化多端的,有时候情况复杂而难以解释,不利于从结果中分析得出结论,因此基准测试施加的压力相比真实压力,要简单。
2.2、基准测试的策略
集成测试:可以测试整个应用系统,包括Web服务器、代码、MySQL等,因为很多时候性能并不是Mysql带来的,只有这样才能测试出整体的瓶颈,以及缓存策略等,但是很难实施。
单组件测试:针对MySQL进行单独测试。
- 不同的schema或查询性能,
- 针对应用中具体问题测试
- 避免漫长的基准测试,通过短期基准测试,做快速“周期循环”
2.3、基准测试的指标
- 吞吐量:
TPS每秒事务数,每秒钟request/事务 数量 - 响应时间或者延迟:
测试任务所需的整体时间, - 并发性:
在任意时间有多少同时发生的并发请求或者在某同时工作的线程数下,吞吐量和延时的变化 - 可扩展性:
给系统增加一倍的工作,理想情况下应当得获得两倍的结果(比如吞吐量)。或者增加一倍的资源(比如CPU数),获得两倍的吞吐量。当然,大多数情况下是不可能线性增长的。
2.4、基准测试的工具
集成式测试工具:ab、http_load、JMeter;
单组件测试工具:mysqlslap、MySQL Benchmark Suite(sql-bench)、Super Smack、Database Test Suite、Percona’s TPCC-MySQL Tool、sysbench。
这些工具相关的东西,到后面测试的时候会进行详细的描述。
下一章:服务器性能剖析。
系列课程