06 生产经验:互联网公司的生产环境数据库是如何进行性能测试的?
1.机器申请下来后要对数据库进行压测,这时你心里应该清楚,如果你申请的是8核16G的机器,就大概知道这个数据库每秒可以抗一两千请求,你申请16核32G的机器部署mysql就知道大概可以每秒抗两三千或者三四千的并发请求
2.把机器交给DBA,让他部署Mysql,接着DBA搞定这台机器上的数据库后把用户名密码给你你就可以用了,连接java应用系统,执行各种各样的sql去实现业务逻辑了
3.有数据库就可以基于他开发系统了吗?并不是,需要用工具对数据库进行压测,观察它的cpu负载,磁盘IO负载,网络IO负载,内存复杂,看数据库每秒能处理这1000条,还是只能处理500条,这就是压测。系统的压测是数据库压测是两回事,可能数据库能抗2000并发,系统应用只能抗500也是有可能的
4.QPS和TPS是什么?
QPS是数据库每秒可以抗的最大的请求,也就是每秒可以处理多少条sql。TPS是数据库每秒可以处理的事务数量,包括提交事务,回滚事务
5.IO相关的压测性能指标
(1)IOPS: 机器的随机IO并发处理能力,比如机器可以达到200个IOPS,意思是每秒可以执行200个随机IO读写。这个指标很关键,你在内存的脏数据,最后都会由IO随机线程在不确定的时间,刷回到磁盘里去,这就是随机IO的过程,指标低的话效率就不高
(2)吞吐量 :这个指标是机器的磁盘存储每秒可以读写多少字节的数据量
执行sql的时候回记录redo log日志,然后这些日志文件会直接写入磁盘,所以一台机器他的存储每秒可以读写多少字节的数据量,就决定他每秒可以处理多少redo log日志写入磁盘的数量
(3)latency : 这个指标是往磁盘写入一条数据的延迟,指标越低越好
6.压测的时候还需要关注的其他指标
(1)CPU负载:比如现在每秒可以抗3000请求,但是cpu的负载特别高,那也已经到极限了
(2)网络负载:比如你的网络宽带是每秒可以传输100M,现在1000个请求,这时候宽带都占用拉满了,这时候也不能继续压测了
(3)内存负载:就是压测到一定的时候看看内存占用多少,如果内存占满,那么也不能继续压测下去了