首先从dba手里要数据库时候要做到心里有数

比如8核16g的机器大约能承受1000-2000的并发请求,16核32g可以承受2000-3000的并发请求,甚至4000左右,

把机器交给专业的dba,让他帮你部署好。

有了数据库还需要进行压测。

库不是给到我们就直接可以用了,因为需要针对这个数据库进行一个较为基本的基准压测。也就是说需要基于一些工具模拟发出并发请求看能具体能抗多少。
不要去用java连接上压测,因为可能java能承受500,而数据库可以扛得住2000,如果用系统压测,很可能测得不准,这样如果优化也是直接从代码优化,因为数据库是测过的了。

QPS和TPS区别。

QPS全称是query per second 就是说数据库每秒可以处理多少请求。可以理解为每秒数据库可以处理多少sql语句。
TPS全称是Transaction per second 就是每秒处理的事务量。说的是数据库可以处理多少次事务提交或者回滚。

IO相关的压测性能指标。

1,IOPS 这个值机器的随机IO并发处理能力,比如机器可以达到200IOPS,意思是说每秒可以执行200个随机io读写请求。

这个指标是用于io在不确定时间去刷会到磁盘离去的随机IO的过程。如果低的话,刷脏数据会磁盘效率 就不高。

2,吞吐量是指机器的磁盘存储每秒可以读写多少字节的数据量。

这个指标很重要,平时执行sql的时候提交事务其实都会写大量redo log之类的日志,这些日志都会直接 写磁盘文件,所以他的读写熟读就决定了每秒可以写多少redo log之类的日志到磁盘,而且还是按顺序读写的,所以一般写入的吞吐量都是200MB左右。 通常来说机器的磁盘吞吐量都是足够承载高并发请求的。

3,latency 这个指标是表示写入磁盘一条数据的延迟。

这个指标也很重要,因为我们执行sql语句和提交事务的时候都需要顺序写redo log磁盘文件,所以此时你写一条日志到磁盘文件去 到底是1ms延迟还是1us的延迟,这就是对数据库的sql语句执行性能是有影响的。 一般来说磁盘读写延迟越低越好。

压测还要关注其他性能指标

除了QPS TPS IOPS 吞吐量 latency这些还要关注一些别的指标。

1,cpu负载

cpu负载是一个很重要的性能指标,因为如果你加请求加到一定程度,发现其他指标都还行,但是cpu负载基本满了,就不能往下继续测了,否则cpu吃不消,这就可以说是当前数据库的最大请求了,如果想接着加,那就要加cpu或者换更高性能的。

2,网络负载

网络负载主要是看每秒中的网卡会输入多少mb数据,会输出多少mb,这种时候也可能网络带宽打满,测不下去了。

3,内存负载

这个主要是看内存是不是满了,如果机器内存消耗过高了,也说明不能继续压测了。