偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

天天用MySQL開(kāi)發(fā),你知道數(shù)據(jù)庫(kù)能抗多大并發(fā)壓力嗎?

數(shù)據(jù)庫(kù) MySQL
你知道你連接的這個(gè)MySQL數(shù)據(jù)庫(kù)他到底能抗多大并發(fā)壓力嗎?如果MySQL數(shù)據(jù)庫(kù)扛不住壓力了,應(yīng)該如何演進(jìn)你知道嗎?

今天給大家分享一個(gè)知識(shí)點(diǎn),是關(guān)于MySQL數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)的,因?yàn)楹芏嘈值芴焯旎趍ysql做系統(tǒng)開(kāi)發(fā),但是寫(xiě)的系統(tǒng)都是那種低并發(fā)壓力、小數(shù)據(jù)量的,所以哪怕上線了也就是這么正常跑著而已,但是你知道你連接的這個(gè)MySQL數(shù)據(jù)庫(kù)他到底能抗多大并發(fā)壓力嗎?如果MySQL數(shù)據(jù)庫(kù)扛不住壓力了,應(yīng)該如何演進(jìn)你知道嗎?

一般業(yè)務(wù)系統(tǒng)運(yùn)行流程圖

首先,我們先來(lái)看一個(gè)最最基礎(chǔ)的java業(yè)務(wù)系統(tǒng)連接數(shù)據(jù)庫(kù)運(yùn)行的架構(gòu),其實(shí)簡(jiǎn)單來(lái)說(shuō),我們平時(shí)都是用spring boot+ssm技術(shù)棧開(kāi)發(fā)一個(gè)java業(yè)務(wù)系統(tǒng)的,用spring boot內(nèi)嵌tomcat就可以對(duì)外提供http接口了,然后最多現(xiàn)在會(huì)加上nacos+dubbo調(diào)用別的系統(tǒng)接口,數(shù)據(jù)全部靠連接mysql數(shù)據(jù)庫(kù)進(jìn)行crud就可以了,如下圖。

上面那種架構(gòu)的系統(tǒng),估計(jì)就是很多兄弟日常做的最多的系統(tǒng)架構(gòu)了,有的兄弟稍微做的高大上一點(diǎn),大概來(lái)說(shuō),可能就是會(huì)加入一些es、redis、rocketmq一類的中間件簡(jiǎn)單使用一下,但是大致來(lái)說(shuō)也就這么回事了,那么還是回歸主題,大家知道你上述那種系統(tǒng)下,他連接的數(shù)據(jù)庫(kù)能抗多大壓力嗎?

一臺(tái)4核8G的機(jī)器能扛多少并發(fā)量呢?

說(shuō)實(shí)話,要解決這個(gè)問(wèn)題,一般來(lái)說(shuō),不是先聊數(shù)據(jù)能抗多少壓力,因?yàn)橥皇菙?shù)據(jù)庫(kù)先去抗高并發(fā),而是你連接數(shù)據(jù)庫(kù)的web系統(tǒng)得先去抗高并發(fā)!也就是我們的spring boot+ssm那套業(yè)務(wù)系統(tǒng)能抗多高并發(fā)我們得先搞清楚!

所以要搞明白這個(gè)問(wèn)題,就得先說(shuō)一個(gè)主題,一般來(lái)說(shuō)我們的spring boot應(yīng)用系統(tǒng)大致就是部署在2核4G或者4核8G的機(jī)器上,這個(gè)機(jī)器配置其實(shí)是很關(guān)鍵的,所以這里直接告訴大家一個(gè)經(jīng)驗(yàn)值,即使說(shuō)咱們?nèi)绻渴鸬氖且粋€(gè)4核8G的機(jī)器,然后spring boot內(nèi)嵌的tomcat默認(rèn)開(kāi)了200個(gè)線程來(lái)處理請(qǐng)求,接著每個(gè)請(qǐng)求都要讀寫(xiě)多次數(shù)據(jù)庫(kù),那么此時(shí),大致來(lái)說(shuō)你的一臺(tái)機(jī)器可以抗大概500~1000這個(gè)并發(fā)量,具體多少得看你的接口復(fù)雜度,如下圖。

高并發(fā)來(lái)襲時(shí)數(shù)據(jù)庫(kù)會(huì)先被打死嗎?

所以其實(shí)一般來(lái)說(shuō),當(dāng)你的高并發(fā)壓力來(lái)襲的時(shí)候,通常不會(huì)是數(shù)據(jù)庫(kù)先扛不住了,而是你的業(yè)務(wù)系統(tǒng)所在機(jī)器抗不住了,比如你部署了2臺(tái)機(jī)器,那么其實(shí)到每秒一兩千并發(fā)的時(shí)候,這兩臺(tái)機(jī)器基本上cpu負(fù)載都得飆升到90%以上 ,壓力很大,而且接口性能會(huì)開(kāi)始往下掉很多了,如下圖。

那么這個(gè)時(shí)候我們的數(shù)據(jù)庫(kù)壓力會(huì)如何呢?其實(shí)一般來(lái)說(shuō)你的兩臺(tái)機(jī)器抗下每秒一兩千的請(qǐng)求的時(shí)候后,數(shù)據(jù)庫(kù)壓力通常也會(huì)到一個(gè)小瓶頸,因?yàn)闉槭裁茨?關(guān)鍵是你的業(yè)務(wù)系統(tǒng)處理每個(gè)業(yè)務(wù)請(qǐng)求的時(shí)候,他是會(huì)讀寫(xiě)多次數(shù)據(jù)庫(kù)的,所以業(yè)務(wù)系統(tǒng)的一次請(qǐng)求可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)有多次請(qǐng)求,也正因?yàn)檫@樣,所以此時(shí)可能你的數(shù)據(jù)庫(kù)并發(fā)壓力會(huì)到幾千的樣子。

8核16G的數(shù)據(jù)庫(kù)每秒大概可以抗多少并發(fā)壓力?

那么所以下一個(gè)問(wèn)題來(lái)了,你的數(shù)據(jù)庫(kù)通常是部署在什么樣配置的機(jī)器上?一般來(lái)說(shuō)給大家說(shuō),數(shù)據(jù)庫(kù)的配置如果是那種特別低并發(fā)的場(chǎng)景,其實(shí)2核4G或者4核8G也是夠了,但是如果是常規(guī)化一點(diǎn)的公司的生產(chǎn)環(huán)境數(shù)據(jù)庫(kù),通常會(huì)是8核16G。那么8核16G的數(shù)據(jù)庫(kù)每秒大概可以抗多少并發(fā)壓力?大體上來(lái)說(shuō),在幾千這個(gè)數(shù)量級(jí)。

因?yàn)檫@個(gè)具體能抗多少并發(fā)也得看你數(shù)據(jù)庫(kù)里的數(shù)據(jù)量 以及你的SQL語(yǔ)句的復(fù)雜度,所以一般來(lái)說(shuō)8核16G的機(jī)器,大概也就是抗到每秒幾千并發(fā)就差不多了,量再大基本就扛不住了,因?yàn)橥竭@個(gè)量級(jí)下,數(shù)據(jù)庫(kù)的cpu、內(nèi)存、網(wǎng)絡(luò)、io的負(fù)載基本都很高了,尤其是cpu,可能至少也在百分之七八十了,如下圖。

數(shù)據(jù)庫(kù)架構(gòu)可以從哪些方面優(yōu)化?

1、根據(jù)業(yè)務(wù)系統(tǒng)拆分多個(gè)數(shù)據(jù)庫(kù)機(jī)器優(yōu)化方案

那么接著說(shuō),如果到了這個(gè)并發(fā)壓力之下,通常來(lái)說(shuō)可以如何進(jìn)行數(shù)據(jù)庫(kù)架構(gòu)的優(yōu)化呢?其實(shí)也簡(jiǎn)單,我們完全可以加機(jī)器,把數(shù)據(jù)庫(kù)部署到多臺(tái)機(jī)器上去。因?yàn)橥ǔ?lái)說(shuō),我們的一個(gè)數(shù)據(jù)庫(kù)里會(huì)放很多業(yè)務(wù)系統(tǒng)的db和tables,所以首先就是可以按照業(yè)務(wù)系統(tǒng)來(lái)進(jìn)行拆分,比如說(shuō)多加一臺(tái)機(jī)器,再部署一個(gè)數(shù)據(jù)庫(kù),然后這里放一部分業(yè)務(wù)系統(tǒng)的db和tables,老數(shù)據(jù)庫(kù)機(jī)器放另外一部分業(yè)務(wù)系統(tǒng)的db和tables,此時(shí)一下子就可以緩解老數(shù)據(jù)庫(kù)機(jī)器的壓力了,如下圖。

2、讀寫(xiě)分離架構(gòu)優(yōu)化方案

那么接著問(wèn)題來(lái)了,如果說(shuō)并發(fā)壓力繼續(xù)提升,導(dǎo)致拆分出去的兩臺(tái)數(shù)據(jù)庫(kù)壓力越來(lái)越大了呢?此時(shí)可以上一招,叫做讀寫(xiě)分離,就是說(shuō)給每個(gè)數(shù)據(jù)庫(kù)掛一個(gè)從庫(kù),讓主數(shù)據(jù)庫(kù)基于binlog數(shù)據(jù)更新日志同步復(fù)制給從數(shù)據(jù)庫(kù),讓主從數(shù)據(jù)庫(kù)保持?jǐn)?shù)據(jù)一致,然后我們的系統(tǒng)其實(shí)可以往主庫(kù)里寫(xiě)入,在從庫(kù)里查詢,此時(shí)就又可以緩解原來(lái)的主數(shù)據(jù)庫(kù)的壓力了,如下圖。

3、分庫(kù)分表架構(gòu)優(yōu)化方案

再往下說(shuō),如果說(shuō)即使是給主數(shù)據(jù)庫(kù)掛了從庫(kù),然后接著并發(fā)壓力繼續(xù)提升,讓我們的主數(shù)據(jù)庫(kù)寫(xiě)入壓力過(guò)大,每秒幾千寫(xiě)入,又要扛不住了呢?此時(shí)就只能上終極方案,分庫(kù)分表了,就是把主庫(kù)拆分為多個(gè)庫(kù),每個(gè)庫(kù)里放一個(gè)表的部分?jǐn)?shù)據(jù),然后用多個(gè)主庫(kù)抗高并發(fā)寫(xiě)入壓力,這樣就可以再次分散我們的壓力了,如下圖所示。

總結(jié)

好了,今天分享的知識(shí)就到這里了,其實(shí)我們的數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)基本上就是按照今天說(shuō)的這個(gè)順序和思路逐步逐步的演進(jìn)的,剛開(kāi)始你單臺(tái)數(shù)據(jù)庫(kù)機(jī)器抗幾千并發(fā)扛不住了,就按照業(yè)務(wù)系統(tǒng)拆分多個(gè)數(shù)據(jù)庫(kù)機(jī)器,然后再扛不住了,就上主從架構(gòu)分?jǐn)傋x寫(xiě)壓力,再扛不住了就分庫(kù)分表,多個(gè)機(jī)器抗數(shù)據(jù)庫(kù)寫(xiě)入壓力,最后總是可以用數(shù)據(jù)庫(kù)架構(gòu)抗住高并發(fā) 壓力的。


責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2022-04-14 07:51:21

MySQL數(shù)據(jù)庫(kù)架構(gòu)

2022-11-08 17:38:34

MySQL數(shù)據(jù)庫(kù)并發(fā)

2017-01-18 18:28:54

大數(shù)據(jù)數(shù)據(jù)庫(kù)技術(shù)

2025-05-07 04:45:00

AIOPS數(shù)據(jù)庫(kù)Oracle

2023-11-01 15:45:29

DBMPython

2022-04-12 07:51:31

架構(gòu)TPSQPS

2024-01-08 08:27:11

注解Bean代理

2024-07-04 11:06:47

2023-11-13 15:36:24

開(kāi)源數(shù)據(jù)庫(kù)

2022-06-24 08:20:04

CAP網(wǎng)絡(luò)通信

2024-01-30 15:29:20

Django數(shù)據(jù)庫(kù)Python

2021-12-10 07:47:31

MySQL設(shè)置數(shù)據(jù)庫(kù)

2019-10-29 08:44:47

Java數(shù)據(jù)庫(kù)實(shí)體

2018-01-04 11:29:07

PHPJAVAMySQL

2021-07-12 10:37:42

Spring面試事務(wù)

2020-01-14 10:37:38

存儲(chǔ)DateTime數(shù)值

2024-04-07 00:02:00

2022-01-08 20:03:20

數(shù)據(jù)庫(kù)特點(diǎn)架構(gòu)

2019-02-28 10:37:19

開(kāi)源數(shù)據(jù)庫(kù)Oracle

2022-12-18 19:38:31

時(shí)序數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)