应用的性能很多时候都取决于数据库的性能,数据库的基准测试可以让我们知道数据库的性能怎样,瓶颈在哪。
基准测试的策略
基准测试有两种主要的策略:一种是集成式测试(针对整个系统的整体测试),另一种是单组件式测试(Mysql测试等组件测试)。在本文中主要介绍Mysql的基准测试,后续我会写一篇针对集成式的测试和这篇进行对应。
测试何种指标
在开始测试前,我们需要先清楚测试的目标是什么?测试目标决定了选择什么样的测试工具和技术,以获得精确而有意义的测试结果。
下面介绍几种测试指标:
吞吐量
吞吐量指的是单位时间内的事务处理数,测试单位是每秒事务数(TPS)或者每分钟事务数(TPM)。如果我们的应用是OLTP(在线事务处理)的应用,那么通过这个指标我们可以知道数据库能支持的业务量是多少。
响应时间或延迟
响应时间或延迟是执行某个任务的整体时间,单位一般是ms。通过这个时间我们可以知道某个任务的执行时间长短,然后有针对性的进行一些优化。
并发性
对于Mysql基准测试来说,并发性是指同时工作的线程数或者连接数。当并发性增加时,需要测试吞吐量是否下降,响应时间是否变长。并发性的测量不同于响应时间和吞吐量,他不像是一个结果,而更像是一个配置属性,通过并发性基准测试,可以知道系统在不同的并发性下的性能。
可扩展性
很多时候我们都会以为增加一倍的硬件配置,就能增加一倍的性能,但很多时候性能并不是1+1=2这样简单。所以我们需要通过可扩展性的测试,来清楚当我们扩展设备配置时,性能的提升是怎样,来支撑业务量的变化。
搭建测试环境
在《Mysql高性能》这本书上有介绍一些测试工具,下面我会根据书上的介绍进行测试,在正式测试前需要先配置测试环境,所以我在阿里云上弄了两台机器,下面两个机器的配置信息。
硬件配置
主机1:
主机2:
主机1是我半年前就已经买的,用于部署我自己的博客,主机2是为了这次测试特意购买的,从硬件配置上,两者的差距只是cpu的核数,一个为1核,一个为2核。
系统版本
主机1:CentOS 7.4 64位
主机2:CentOS 7.6 64位
mysql-server版本
主机1: 5.6.45
主机2: 5.6.45
安装mysql-server1
2
3
4
5
6
7
8
9
10
11
12#安装mysql客户端
yum install mysql;
#安装mysql服务端