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

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

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

前言

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

那么解決問題,就得說到方案。但是方案有很多,我們該怎么選擇呢?

優(yōu)化與方案

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

短距離

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

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

少數(shù)據(jù)

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

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

分散壓力

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

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

結語

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

相關文章

  • mysql 數(shù)據(jù)表中查找重復記錄

    mysql 數(shù)據(jù)表中查找重復記錄

    以下sql語句可以實現(xiàn)查找出一個表中的所有重復的記錄
    2009-07-07
  • MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細介紹

    MySQL中的聚簇索引、非聚簇索引、聯(lián)合索引和唯一索引詳細介紹

    本文主要介紹了MySQL的索引類型,根據(jù)索引的存儲方式來劃分,索引可以分為聚簇索引和非聚簇索引。聚簇索引的特點是葉子節(jié)點包含了完整的記錄行,而非聚簇索引的葉子節(jié)點只有所以字段和主鍵ID,感興趣的同學可以閱讀本文
    2023-04-04
  • MYSQL GROUP BY用法詳解

    MYSQL GROUP BY用法詳解

    這篇文章主要為大家詳細介紹了MYSQL GROUP BY用法,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 保障MySQL數(shù)據(jù)安全的一些建議

    保障MySQL數(shù)據(jù)安全的一些建議

    這篇文章主要介紹了MySQL數(shù)據(jù)安全的一些建議,幫助大家平時更好的運維數(shù)據(jù)庫,保障數(shù)據(jù)安全,感興趣的朋友可以了解下
    2020-08-08
  • 淺談Mysql中類似于nvl()函數(shù)的ifnull()函數(shù)

    淺談Mysql中類似于nvl()函數(shù)的ifnull()函數(shù)

    下面小編就為大家?guī)硪黄獪\談Mysql中類似于nvl()函數(shù)的ifnull()函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Mysql中存儲UUID去除橫線的方法

    Mysql中存儲UUID去除橫線的方法

    這篇文章主要介紹了Mysql中存儲UUID去除橫線的方法,本文給出了3個Mysql函數(shù)實現(xiàn)去除去UUID中的橫線,需要的朋友可以參考下
    2015-02-02
  • Mysql數(shù)據(jù)庫中子查詢的使用

    Mysql數(shù)據(jù)庫中子查詢的使用

    本文給大家分享mysql數(shù)據(jù)庫中子查詢的使用,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • MyISAM和InnoDB引擎優(yōu)化分析

    MyISAM和InnoDB引擎優(yōu)化分析

    這幾天在學習mysql數(shù)據(jù)庫的優(yōu)化并在自己的服務器上進行設置,喻名堂主要學習了MyISAM和InnoDB兩種引擎的優(yōu)化方法,需要了解跟多的朋友可以參考下
    2012-11-11
  • Windows server 2008 r2上安裝MySQL5.7.10步驟

    Windows server 2008 r2上安裝MySQL5.7.10步驟

    這篇文章主要介紹了Windows server 2008 r2上安裝MySQL5.7.10的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Mysql提權的多種姿勢匯總

    Mysql提權的多種姿勢匯總

    這篇文章主要給大家介紹了關于Mysql提權的多種姿勢,姿勢包括寫入Webshell、UDF提權以及MOF提權,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08

最新評論