欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 數(shù)據(jù)庫(kù)如何解決高并發(fā)問(wèn)題

 更新時(shí)間:2020年09月07日 09:36:36   作者:野區(qū)杰西  
這篇文章主要介紹了MySQL 如何處理高并發(fā),幫助大家更好的優(yōu)化MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下

前言

我們都知道初創(chuàng)公司一開(kāi)始都是以單體應(yīng)用為首要架構(gòu),一般都是單體單庫(kù)的形式。但是版本以及版本的迭代,數(shù)據(jù)庫(kù)需要承受更多的高并發(fā)已經(jīng)成了 架構(gòu)設(shè)計(jì) 需要考慮的點(diǎn)。

那么解決問(wèn)題,就得說(shuō)到方案。但是方案有很多,我們?cè)撛趺催x擇呢?

優(yōu)化與方案

基本上,我們優(yōu)化要從幾個(gè)關(guān)鍵字入手: 短距離 , 少數(shù)據(jù) , 分散壓力 。

短距離

所謂的短距離,指的是從前端到數(shù)據(jù)庫(kù)的路徑要短。

  1. 頁(yè)面靜態(tài)。有些頁(yè)面的數(shù)據(jù)是在某些時(shí)段是不變的,那么這個(gè)頁(yè)面可以靜態(tài)化,這樣可以提高訪問(wèn)的速度。
  2. 使用緩存。緩存大家都知道,快的原因就是基于內(nèi)存。所以使用基于內(nèi)存的緩存的話,可以減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),同時(shí)加速訪問(wèn)速度。
  3. 批量讀取。高并發(fā)的情況下,可以將多個(gè)請(qǐng)求的查詢合在一次進(jìn)行,以減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)速度。
  4. 延遲修改。延遲修改的意思高并發(fā)的情況西可能是將多次修改數(shù)據(jù)放在緩存中,然后定時(shí)將緩存中的數(shù)據(jù)過(guò)更新到數(shù)據(jù)庫(kù);也可以是通過(guò)緩存的同步策略通過(guò)解析異步同步到數(shù)據(jù)庫(kù)中。
  5. 使用索引。這個(gè)不用說(shuō)了,索引有著比較多的類型,例如普通索引/主鍵索引/組合索引/全文索引等。

少數(shù)據(jù)

所謂的少數(shù)據(jù),其實(shí)是查詢的數(shù)據(jù)要少。

  1. 分表。所謂的分表,其實(shí)有水平切分和垂直拆分。玩過(guò)單機(jī)的小伙伴都知道,往往一些具有歷史性的表單,都會(huì)有成百上千萬(wàn)級(jí)別的數(shù)據(jù)。這樣子對(duì)于 MySQL 來(lái)說(shuō),即使是加了索引,SQL 方面繼續(xù)優(yōu)化,也很難做到更快的查詢速度。那么我們可以通過(guò)分表的操作來(lái)實(shí)現(xiàn)。例如說(shuō)最常見(jiàn)的我們可以根據(jù)時(shí)間的維度來(lái)進(jìn)行表的水平拆分,今年的數(shù)據(jù)保持下來(lái),而去年的數(shù)據(jù)可以存在另外一個(gè)表里。
  2. 分離活躍數(shù)據(jù)。其實(shí)這個(gè)有點(diǎn)類似緩存,但是不同之處在于數(shù)據(jù)還是在 MySQL 上面的。例如一個(gè)查詢商品的業(yè)務(wù),有一些火爆/經(jīng)常被搜索的商品可以存在一張活躍表。查詢的時(shí)候先查詢活躍表,沒(méi)有的話再查詢總商品表。
  3. 分塊。這個(gè)分塊有點(diǎn)類似于算法里面的“索引順序查找”。通過(guò)數(shù)據(jù)層面的優(yōu)化,將數(shù)據(jù)放在不同的塊中,而我們只需要計(jì)算找到對(duì)應(yīng)的塊就行了。

分散壓力

所謂的分散壓力,其實(shí)是分散不同數(shù)據(jù)庫(kù)服務(wù)器的壓力

  1. 集群。集群的概念相信大家都很清楚,對(duì)于業(yè)務(wù)服務(wù)器來(lái)說(shuō)其實(shí)就是具備相同業(yè)務(wù)流程的服務(wù)器部署多臺(tái),通過(guò)負(fù)載均衡或其他方式來(lái)將請(qǐng)求分配到不同服務(wù)器。而數(shù)據(jù)庫(kù)也一樣,通過(guò)特定的規(guī)則策略將數(shù)據(jù)導(dǎo)向特定的數(shù)據(jù)庫(kù)服務(wù)器上。
  2. 分布式。所謂的分布式,其實(shí)就是將原本處于同個(gè)流程的業(yè)務(wù)邏輯分配到不同的服務(wù)器上面執(zhí)行,達(dá)到了“并發(fā)”執(zhí)行的效果,加快執(zhí)行速度。
  3. 分庫(kù)分表。分庫(kù)分表主要是水平拆分和垂直拆分。對(duì)于訪問(wèn)頻率高而數(shù)據(jù)量巨大的單表,可以減少單表的數(shù)據(jù),根據(jù)特定的維度進(jìn)行水平拆分,增加數(shù)據(jù)庫(kù)的吞吐量,這就是 分表水平拆分 ;而對(duì)于業(yè)務(wù)耦合性低的多表來(lái)說(shuō),可以將不同的表存儲(chǔ)在不同的數(shù)據(jù)庫(kù)上,對(duì)數(shù)據(jù)庫(kù)進(jìn)行垂直拆分,提高數(shù)據(jù)庫(kù)寫(xiě)的能力,即 分庫(kù)的垂直拆分 。
  4. 建立主從。建立主從的目的其實(shí)就是為了讀寫(xiě)分離。我們都知道,只要數(shù)據(jù)庫(kù)的事務(wù)級(jí)別夠高,那么并發(fā)讀是不會(huì)影響到數(shù)據(jù)的混亂,而并發(fā)寫(xiě)則會(huì)。所以建立主從一般來(lái)說(shuō),寫(xiě)會(huì)留在主服務(wù)器上寫(xiě),而會(huì)在從服務(wù)器上讀。 所以基本上讓主服務(wù)器進(jìn)行事務(wù)性操作,從服務(wù)器進(jìn)行 select 查詢。這樣子的話,事務(wù)性操作(增加/刪除/修改)導(dǎo)致的改變更新同步到集群中的從數(shù)據(jù)庫(kù) 。

結(jié)語(yǔ)

以上就是MySQL 如何處理高并發(fā)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 高并發(fā)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MySql兩表關(guān)聯(lián)更新update示例SQL語(yǔ)句(用一個(gè)表更新另一個(gè)表)

    MySql兩表關(guān)聯(lián)更新update示例SQL語(yǔ)句(用一個(gè)表更新另一個(gè)表)

    這篇文章主要介紹了MySql兩表關(guān)聯(lián)更新update示例SQL語(yǔ)句的相關(guān)資料,文中分享了兩種處理方式(保留/清空未匹配數(shù)據(jù)),演示觸發(fā)器記錄更新操作至audit表,并通過(guò)示例SQL展示不同場(chǎng)景下更新效果及注意事項(xiàng),需要的朋友可以參考下
    2025-06-06
  • 服務(wù)器MYSQL啟動(dòng)/停止/重啟命令方式

    服務(wù)器MYSQL啟動(dòng)/停止/重啟命令方式

    文章介紹了查看MySQL版本的兩種方法及啟動(dòng)/停止/重啟命令,提示5.5后服務(wù)名改為mysql,舊版本用mysqld;現(xiàn)代系統(tǒng)推薦systemctl替代service,需注意命令差異
    2025-09-09
  • MySQL數(shù)據(jù)庫(kù)如何導(dǎo)入導(dǎo)出(備份還原)

    MySQL數(shù)據(jù)庫(kù)如何導(dǎo)入導(dǎo)出(備份還原)

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)如何導(dǎo)入導(dǎo)出(備份還原),需要的朋友可以參考下
    2015-10-10
  • mysql最大連接數(shù)設(shè)置技巧總結(jié)

    mysql最大連接數(shù)設(shè)置技巧總結(jié)

    在本篇文章里小編給大家分享了關(guān)于mysql最大連接數(shù)設(shè)置的相關(guān)知識(shí)點(diǎn)和技巧,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • Mysql事務(wù)特性和級(jí)別原理解析

    Mysql事務(wù)特性和級(jí)別原理解析

    這篇文章主要介紹了Mysql事務(wù)特性和級(jí)別原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • mysql 詳解隔離級(jí)別操作過(guò)程(cmd)

    mysql 詳解隔離級(jí)別操作過(guò)程(cmd)

    這篇文章主要介紹了mysql 詳解隔離級(jí)別操作過(guò)程(cmd)的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • MYSQL?增加從庫(kù)方式介紹

    MYSQL?增加從庫(kù)方式介紹

    這篇文章主要介紹了MYSQL?增加從庫(kù)方式介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2022-08-08
  • mysql數(shù)據(jù)庫(kù) 主從復(fù)制的配置方法

    mysql數(shù)據(jù)庫(kù) 主從復(fù)制的配置方法

    本文主要介紹 mysql數(shù)據(jù)庫(kù) 主從負(fù)責(zé)的配置方法,在做數(shù)據(jù)庫(kù)開(kāi)發(fā)的時(shí)候有時(shí)候會(huì)遇到,這里做出詳細(xì)流程,大家可以參考下
    2016-07-07
  • MySQL數(shù)據(jù)庫(kù)JDBC編程詳解流程

    MySQL數(shù)據(jù)庫(kù)JDBC編程詳解流程

    JDBC是指Java數(shù)據(jù)庫(kù)連接,是一種標(biāo)準(zhǔn)Java應(yīng)用編程接口(?JAVA?API),用來(lái)連接?Java?編程語(yǔ)言和廣泛的數(shù)據(jù)庫(kù)。從根本上來(lái)說(shuō),JDBC?是一種規(guī)范,它提供了一套完整的接口,允許便攜式訪問(wèn)到底層數(shù)據(jù)庫(kù),本篇文章我們來(lái)了解MySQL連接JDBC的流程方法
    2022-01-01
  • MySQL自動(dòng)安裝腳本代碼實(shí)例分享

    MySQL自動(dòng)安裝腳本代碼實(shí)例分享

    這篇文章主要介紹了MySQL自動(dòng)安裝腳本代碼實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
    2023-07-07

最新評(píng)論