百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

天天用MySQL开发,你知道数据库能抗多大并发压力吗?

mhr18 2025-04-11 01:10 37 浏览 0 评论

今天给大家分享一个知识点,是关于MySQL数据库架构演进的,因为很多兄弟天天基于mysql做系统开发,但是写的系统都是那种低并发压力、小数据量的,所以哪怕上线了也就是这么正常跑着而已,但是你知道你连接的这个MySQL数据库他到底能抗多大并发压力吗?如果MySQL数据库扛不住压力了,应该如何演进你知道吗?


一般业务系统运行流程图

首先,我们先来看一个最最基础的java业务系统连接数据库运行的架构,其实简单来说,我们平时都是用spring boot+ssm技术栈开发一个java业务系统的,用spring boot内嵌tomcat就可以对外提供http接口了,然后最多现在会加上nacos+dubbo调用别的系统接口,数据全部靠连接mysql数据库进行crud就可以了,如下图。

上面那种架构的系统,估计就是很多兄弟日常做的最多的系统架构了,有的兄弟稍微做的高大上一点,大概来说,可能就是会加入一些es、redis、rocketmq一类的中间件简单使用一下,但是大致来说也就这么回事了,那么还是回归主题,大家知道你上述那种系统下,他连接的数据库能抗多大压力吗?


一台4核8G的机器能扛多少并发量呢?

说实话,要解决这个问题,一般来说,不是先聊数据能抗多少压力,因为往往不是数据库先去抗高并发,而是你连接数据库的web系统得先去抗高并发!也就是我们的spring boot+ssm那套业务系统能抗多高并发我们得先搞清楚!

所以要搞明白这个问题,就得先说一个主题,一般来说我们的spring boot应用系统大致就是部署在2核4G或者4核8G的机器上,这个机器配置其实是很关键的,所以这里直接告诉大家一个经验值,即使说咱们如果部署的是一个4核8G的机器,然后spring boot内嵌的tomcat默认开了200个线程来处理请求,接着每个请求都要读写多次数据库,那么此时,大致来说你的一台机器可以抗大概500~1000这个并发量,具体多少得看你的接口复杂度,如下图。


高并发来袭时数据库会先被打死吗?

所以其实一般来说,当你的高并发压力来袭的时候,通常不会是数据库先扛不住了,而是你的业务系统所在机器抗不住了,比如你部署了2台机器,那么其实到每秒一两千并发的时候,这两台机器基本上cpu负载都得飙升到90%以上 ,压力很大,而且接口性能会开始往下掉很多了,如下图。

那么这个时候我们的数据库压力会如何呢?其实一般来说你的两台机器抗下每秒一两千的请求的时候后,数据库压力通常也会到一个小瓶颈,因为为什么呢?关键是你的业务系统处理每个业务请求的时候,他是会读写多次数据库的,所以业务系统的一次请求可能会导致数据库有多次请求,也正因为这样,所以此时可能你的数据库并发压力会到几千的样子。


8核16G的数据库每秒大概可以抗多少并发压力?

那么所以下一个问题来了,你的数据库通常是部署在什么样配置的机器上?一般来说给大家说,数据库的配置如果是那种特别低并发的场景,其实2核4G或者4核8G也是够了,但是如果是常规化一点的公司的生产环境数据库,通常会是8核16G。那么8核16G的数据库每秒大概可以抗多少并发压力?大体上来说,在几千这个数量级


因为这个具体能抗多少并发也得看你数据库里的数据量 以及你的SQL语句的复杂度,所以一般来说8核16G的机器,大概也就是抗到每秒几千并发就差不多了,量再大基本就扛不住了,因为往往到这个量级下,数据库的cpu、内存、网络、io的负载基本都很高了,尤其是cpu,可能至少也在百分之七八十了,如下图。

数据库架构可以从哪些方面优化?

1、根据业务系统拆分多个数据库机器优化方案

那么接着说,如果到了这个并发压力之下,通常来说可以如何进行数据库架构的优化呢?其实也简单,我们完全可以加机器,把数据库部署到多台机器上去。因为通常来说,我们的一个数据库里会放很多业务系统的db和tables,所以首先就是可以按照业务系统来进行拆分,比如说多加一台机器,再部署一个数据库,然后这里放一部分业务系统的db和tables,老数据库机器放另外一部分业务系统的db和tables,此时一下子就可以缓解老数据库机器的压力了,如下图。

2、读写分离架构优化方案

那么接着问题来了,如果说并发压力继续提升,导致拆分出去的两台数据库压力越来越大了呢?此时可以上一招,叫做读写分离,就是说给每个数据库挂一个从库,让主数据库基于binlog数据更新日志同步复制给从数据库,让主从数据库保持数据一致,然后我们的系统其实可以往主库里写入,在从库里查询,此时就又可以缓解原来的主数据库的压力了,如下图。


3、分库分表架构优化方案

再往下说,如果说即使是给主数据库挂了从库,然后接着并发压力继续提升,让我们的主数据库写入压力过大,每秒几千写入,又要扛不住了呢?此时就只能上终极方案,分库分表了,就是把主库拆分为多个库,每个库里放一个表的部分数据,然后用多个主库抗高并发写入压力,这样就可以再次分散我们的压力了,如下图所示。


总结

好了,今天分享的知识就到这里了,其实我们的数据库架构演进基本上就是按照今天说的这个顺序和思路逐步逐步的演进的,刚开始你单台数据库机器抗几千并发扛不住了,就按照业务系统拆分多个数据库机器,然后再扛不住了,就上主从架构分摊读写压力,再扛不住了就分库分表,多个机器抗数据库写入压力,最后总是可以用数据库架构抗住高并发 压力的。

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: