外观
基准测试
基准测试与压力测试
基准测试可以理解为针对系统的一种压力测试。
- 基准测试不关心业务逻辑,更加简单、直接,易于测试,数据可以由工具生成,不要求真实。
- 压力测试一般考虑业务逻辑,要求真实的数据。
对于大多数 Web 应用来说,整个系统的瓶颈在于数据库,原因很简单:
- Web应用中的其他因素(例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘灯、连接数等)、缓存)都很容易通过增加机器水平的扩展来实现性能的提高。
- 而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力,虽然可以通过读写分离、分库、分表来减轻压力,但是与系统其他组件的水平扩展相比,数据库仍然受到了太多的限制。
对数据库进行基准测试的作用是分析在当前配置(硬件配置、操作系统配置、数据库配置等)下,其数据库的性能表现,从而找出 MySQL 的性能阈值,并根据实际系统的要求调整配置。
基准测试的指标
- 每秒查询数(Query Per Second,
QPS):是对一个特定的查询服务器在规定时间内处理查询数量的衡量标准,对应fetches/sec,即每秒的响应请求数。 - 每秒处理的事务数(Transaction Per Second,
TPS):是指系统在单位时间内处理事务的数量。对于非并发的应用系统而言,TPS与响应时间呈反比关系,实际上此时TPS就是响应时间的倒数。对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统而言,通常需要用TPS作为性能指标。 - 响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前 90% 的请求的最大响应时间。
- 并发量:同时处理的查询请求的数量,即可以同时承载的正常业务功能的请求数量。
在对 MySQL 进行基准测试时,一般使用专门的工具,例如 MySQLslap、Sysbench 等。其中,Sysbench 比 MySQLslap 更通用、更强大。
Sysbench
Sysbench 是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行 CPU、内存、磁盘 I/O、线程、数据库的性能测试。目前支持的数据库有 MySQL、Oracle 和 PostgreSQL。它主要包括以下几种测试:
- CPU性能。
- 磁盘I/O性能。
- 调度程序性能。
- 内存分配及传输速度。
- 数据库性能基准测试。