当前位置:网站首页>MySQL实战优化高手05 生产经验:真实生产环境下的数据库机器配置如何规划?
MySQL实战优化高手05 生产经验:真实生产环境下的数据库机器配置如何规划?
2022-07-06 09:08:00 【办公模板库 素材蛙】
1、当你了解数据库的架构原理之后,就该了解一下自己数据库的规划
之前我们用了4篇文章给大家整体分析了一下MySQL数据库的工作原理,相信很多朋友都已经对数据库的整体架构原理有了一定的了解,毕竟在这之前,可能大部分人对MySQL数据库的了解还停留在执行SQL语句的程度。
当我们初步了解了数据库的架构设计原理后,接着其实应该了解的第一件事,就是我们平时在工作中,如何规划生产环境下的数据库。因为我想很多人如果平时主要是负责一些没什么并发量,用户量也就几十个或者几百个人的系统,那么根本就不会去关注数据库的规划这件事情。
对很多Java工程师而言,要不然是自己找一台linux机器装一个MySQL,然后就让自己的系统连接上去直接就开始使用了,要不然就是让DBA或者运维工程师帮自己去找一台机器装一个MySQL或者Oracle,然后自己就可以直接使用了。
但是在我们的专栏中,我们希望能够教会大家较为专业化的数据库使用经验,包括数据库的整体架构原理,还有就是如何规划生产环境下的数据库,包括当你有一个生产库之后,要做的事情就是设计压测方案,包括对你的数据库进行压测,包括对你的数据库部署可视化监控系统,等等。
当你做好这一系列的事情之后,接着才应该是开发你的Java系统,去操作你的数据库,实现各种各样的业务功能和逻辑。
2、生产数据库一般用什么配置的机器?
现在我们来看第一个问题,假设你在生产环境中需要部署一个数据库,此时首先你就需要一个机器来部署这个数据库。那么我们要考虑的事情就是,部署一个生产环境的数据库,一般需要什么样配置的机器呢?
接下来我们将会给大家说一些我们的经验值,直接告诉大家什么样配置的机器部署的MySQL数据库,大致适合多高的并发访问量
当你了解这个经验值之后,未来当你在负责系统的开发,申请数据库的时候,你就知道生产环境下的数据库大致需要什么样的机器配置了,大致可以抗下多少并发访问了。
首先我们先明确一点,如果你负责的系统就是一个没什么并发访问量,用户就几十个人或者几百个人的系统,那么其实你选择什么样的机器去部署数据库,影响都不是很大,哪怕是你用我们自己平时用的个人笔记本电脑去部署一个MySQL数据库,其实也能支撑那种低并发系统的运行。
因为那种系统可能每隔几分钟才会有一波请求发到数据库上去,而且数据库里一张表也许就几百条、几千条或者几万条数据,数据量很小,并发量很小,操作频率很低,用户量很小,并发量很小,只不过可能系统的业务逻辑很复杂而已。对于这类系统的数据库机器选型,就不在我们的考虑范围之内了。
我们主要关注的是有一定并发量的互联网类的系统,对数据库可能会产生每秒几百,每秒几千,甚至每秒上万的并发请求量,对于这类场景下,我们应该选择什么样的机器去部署数据库,才能比较好的抗下我们的系统压力。
3、普通的Java应用系统部署在机器上能抗多少并发?
通常来说,根据我们的经验值而言,Java应用系统部署的时候常选用的机器配置大致是2核4G和4核8G的较多一些,数据库部署的时候常选用的机器配置最低在8核16G以上,正常在16核32G
那么以我们大量的高并发线上系统的生产经验观察下来而言,一般Java应用系统部署在4核8G的机器上,每秒钟抗下500左右的并发访问量,差不多是比较合适的,当然这个也不一定。因为你得考虑一下,假设你每个请求花费1s可以处理完,那么你一台机器每秒也许只可以处理100个请求,但是如果你每个请求只要花费100ms就可以处理完,那么你一台机器每秒也许就可以处理几百个请求。
所以一台机器能抗下每秒多少请求,往往是跟你每个请求处理耗费多长时间是关联的,但是大体上来说,根据我们大量的经验观察而言,4核8G的机器部署普通的Java应用系统,每秒大致就是抗下几百的并发访问,从每秒一两百请求到每秒七八百请求,都是有可能的,关键是看你每个请求处理需要耗费多长时间。
4、高并发场景下,数据库应该用什么样的机器?
对于数据库而言,我们刚才也说过了,通常推荐的数据库至少是选用8核16G以的机器,甚至是16核32G的机器更加合适一些。
因为大家要考虑一个问题,对于我们的Java应用系统,主要耗费时间的是Java系统和数据库之间的网络通信。对Java系统自己而言,如果你仅仅只是系统内部运行一些普通的业务逻辑,纯粹在自己内存中完成一些业务逻辑,这个性能是极高极高的。
对于你Java系统接收到的每个请求,耗时最多的还是发送网络请求到数据库上去,等待数据库执行一些SQL语句,返回结果给你。
所以其实我们常说你有一个Java系统压力很大,负载很高,但是其实你要明白一点,你这个Java系统其实主要的压力和复杂都是集中在你依赖的那个MySQL数据库上的!
因为你执行大量的增删改查的SQL语句的时候,MySQL数据库需要对内存和磁盘文件进行大量的IO操作,所以数据库往往是负载最高的!这个问题我们在之前4篇文章里,通过MySQL数据库架构原理的分析,都已经讲解过了。
而你的Java系统一般并不需要你去直接大量的读写本地文件进行耗时的IO操作吧?是不是,想必做过Java开发的朋友一下子就会想明白这个道理。
所以往往对一个数据库而言,都是选用8核16G的机器作为起步,最好是选用16核32G的机器更加合适一些,因为数据库需要执行大量的磁盘IO操作,他的每个请求都比较耗时一些,所以机器的配置自然需要高一些了。
然后通过我们之前的经验而言,一般8核16G的机器部署的MySQL数据库,每秒抗个一两千并发请求是没问题的,但是如果你的并发量再高一些,假设每秒有几千并发请求,那么可能数据库就会有点危险了,因为数据库的CPU、磁盘、IO、内存的负载都会很高,弄不数据库压力过大就会宕机。
对于16核32G的机器部署的MySQL数据库而言,每秒抗个两三千,甚至三四千的并发请求也都是可以的,但是如果你达到每秒上万请求,那么数据库的CPU、磁盘、IO、内存的负载瞬间都会飙升到很高,数据库也是可能会扛不住宕机的。
所以这就是对于数据库,我们一般推荐选用的机器的配置,以及他大致可以抗下多高的并发请求量的经验分享。
另外对于数据库而言,如果可以的话,最好是采用SSD固态硬盘而不是普通的机械硬盘,因为数据库最大的复杂就在于大量的磁盘IO,他需要大量的读写磁盘文件,所以如果能使用SSD固态硬盘,那么你的数据库每秒能抗的并发请求量就会更高一些。
5、今日思考题
今天想留给大家一个小的思考题:假设你开发的Java系统部署在一台4核8G的机器上,那么我们假设这个Java系统处理一个请求非常非常快,每个请求只需要0.01ms就可以处理完了,那你觉得这一台机器部署的Java系统,可以实现每秒抗下几千并发请求吗?可以实现每秒抗下几万并发请求吗?
边栏推荐
- June brush question 01 - array
- 在CANoe中通過Panel面板控制Test Module 運行(初級)
- May brush question 27 - figure
- If a university wants to choose to study automation, what books can it read in advance?
- 美新泽西州州长签署七项提高枪支安全的法案
- 33岁可以学PLC吗
- flask运维脚本(长时间运行)
- 112 pages of mathematical knowledge sorting! Machine learning - a review of fundamentals of mathematics pptx
- Cooperative development in embedded -- function pointer
- Vscode common instructions
猜你喜欢
Canoe cannot automatically identify serial port number? Then encapsulate a DLL so that it must work
What should the redis cluster solution do? What are the plans?
What you have to know about network IO model
在CANoe中通过Panel面板控制Test Module 运行(初级)
大学想要选择学习自动化专业,可以看什么书去提前了解?
Release of the sample chapter of "uncover the secrets of asp.net core 6 framework" [200 pages /5 chapters]
Target detection -- yolov2 paper intensive reading
四川云教和双师模式
Learning SCM is of great help to society
Carolyn Rosé博士的社交互通演讲记录
随机推荐
max-flow min-cut
MySQL ERROR 1040: Too many connections
The governor of New Jersey signed seven bills to improve gun safety
C杂讲 动态链表操作 再讲
Sichuan cloud education and double teacher model
Combined search /dfs solution - leetcode daily question - number of 1020 enclaves
Summary of May training - from a Guang
Several silly built-in functions about relative path / absolute path operation in CAPL script
The real future of hardware engineers may not be believed by you if I say so
The programming ranking list came out in February. Is the result as you expected?
C#/. Net phase VI 01C Foundation_ 01: running environment, process of creating new C program, strict case sensitivity, meaning of class library
Interview shock 62: what are the precautions for group by?
在CANoe中通过Panel面板控制Test Module 运行(高级)
Hero League rotation chart manual rotation
May brush question 03 - sorting
Zsh configuration file
Pointer learning
Target detection -- yolov2 paper intensive reading
May brush question 01 - array
CAPL脚本中关于相对路径/绝对路径操作的几个傻傻分不清的内置函数