如何估算一台数据库服务器能够承受的并发量?

内在因素

在估算之前我们必须清楚这台数据库服务器的配置是什么情况,正常情况下我们需要摸清楚以下几点因素:

  1. 什么数据库?是MySQL还是Oracle亦或是DB2、PostgreSQL等;
  2. 几核CPU?现代数据库应用都充分的运用了多核CPU的并行处理能力;
  3. 内存多大?数据库的索引数据、缓存数据都会进入内存中;
  4. 磁盘IO能力:数据库文件都存储在磁盘中,所以磁盘的IO能力将是影响数据库性能的最直接因素;
  5. 网络带宽:网络的上行和下行带宽,数据库服务器可支持的最大连接数是多少。

外在因素

天下武功,唯快不破”。

应用程序开发如此,SQL查询、操作也是如此。更快意味着服务器资源的快速释放,以便CPU能继续处理其他的任务请求。

我们在评估数据库的并发量的时候,即使数据库服务器性能再好,你做出的评估如果没有结合使用数据库的程序的话,那也是属于纸上谈兵。

结合以下实际情况,可以更准确安全的做数据库并发量评估或技术选型:

  1. 链接数据库的都有哪些程序?给APP用和给大数据团队做数据报表分析用完全是两码事;
  2. 业务数据量多大?最大的表能达到多少?是否需要分库?分表?
  3. 平均SQL执行时间多大?
  4. 业务程序总PV能达到多少,每天什么时间段是高峰期,高峰期持续多久?可以根据高峰期QPS来预估数据库要承受的并发量,在此基础上再做2倍、3倍的扩容,防止突然来的高流量冲击。

最好的办法是做压力测试

上面说的是数据库服务器的并发量预估考虑的内在因素和外在因素,根据这些因素我们便能预估出一台服务器需要承受的并发量是多大了。但是仅仅是预估,无法达到一个准确的数字,或者说这台数据库服务器最大能承受的并发量是多少也是无法知道的。

所以最好的办法是做数据库压力测试,压力测试的时候,我们可以一点一点的加压力,逐步的得出数据库的:

  • QPS:Queries Per Second 每秒处理的查询数(如果是数据库,就相当于读取)
  • TPS:Transactions Per Second 每秒处理的事务数(如果是数据库,就相当于写入、修改)
  • IOPS:每秒磁盘进行的I/O操作次数

得出这些数据,便能做到心中有数,也能准确的判断出能否支撑住接入的程序和业务。

常用的压测工具:

  • sysbench
  • Tpcc-mysql
  • mysqlslap

如何使用的问题大家可以google一下,也可以使用这些工具实验一下。

没有固定的公式去计算服务器的并发量,即使相同配置下的不同服务器,也无法做到相同水平的处理能力,必须结合服务器自身的情况和业务的具体情况做大致的预估,并最终进行全场景业务压力测试来确定具体并发数值。

原文发布于微信公众号 - 物流IT圈(exiter18)

原文发表时间:2019-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券