查詢執(zhí)行過(guò)程

執(zhí)行查詢過(guò)程概述

如圖所示,客戶端(Clients)發(fā)布查詢的流程如下,首先連接MySql(connection Handing),然后發(fā)布查詢,如果緩存(query cache)中有結(jié)果集,則直接返回結(jié)果集。如果緩存中沒(méi)有,那么,MySql解析查詢(Parser)將通過(guò)優(yōu)化器(Optimizer)生成執(zhí)行計(jì)劃,然后運(yùn)行執(zhí)行計(jì)劃通過(guò)API(Pluggable Storage Engine API)從存儲(chǔ)引擎獲取數(shù)據(jù),并返回給客戶端。

MySQL復(fù)制架構(gòu)

假設(shè)有A,B,C三個(gè)MySQL實(shí)例,他們的復(fù)制模式如下:

  • 主從模式 A->B
  • 主主模式 A<-->B
  • 鏈?zhǔn)綇?fù)制模式 A->B->C
    -環(huán)形復(fù)制模式 A->B->C->A
    生產(chǎn)中一般建議部署為主從模式,這也是最穩(wěn)健的一種方式。
    為了方便切換,在一定程度上提高可用性,也可以選擇主主模式。需要注意的是,主主模式必須保證任何時(shí)刻只有一個(gè)數(shù)據(jù)庫(kù)是主動(dòng)(Active)狀態(tài),也就是說(shuō)同一時(shí)刻只能寫入一個(gè)主(Master)節(jié)點(diǎn),否則可能導(dǎo)致數(shù)據(jù)異常。
一些基礎(chǔ)概念
  • 可擴(kuò)展性
    可擴(kuò)展性也稱為伸縮性,指的是系統(tǒng)不斷增長(zhǎng)其承載能力的能力。它是能滿足不斷增長(zhǎng)的負(fù)荷而自身性能仍然尚可的一種能力
  • 可用性
    可用性可以定義為系統(tǒng)保持正茬運(yùn)行時(shí)間的百分比,比如一個(gè)系統(tǒng)一共運(yùn)行了100分鐘,有99分鐘是正常運(yùn)行的,那么可用性就是99%
  • 單點(diǎn)故障
    單點(diǎn)故障是指系統(tǒng)中的某個(gè)部分,一旦失敗,將會(huì)導(dǎo)致整個(gè)系統(tǒng)無(wú)法工作。為了消除單點(diǎn)故障,一般需要增加冗余組件或冗余系統(tǒng)。比如冗余的服務(wù)器,備用的數(shù)據(jù)中心等。如果要設(shè)計(jì)高可用的服務(wù),單點(diǎn)故障是需要盡量避免的。
  • 讀寫分離
    由于數(shù)據(jù)庫(kù)只能接受有限的讀請(qǐng)求。對(duì)于讀請(qǐng)求較多的應(yīng)用,數(shù)據(jù)庫(kù)可能會(huì)成為瓶頸,為了增加讀的能力,提高擴(kuò)展性,因此引入了讀寫分離的技術(shù)。比如,利用復(fù)制技術(shù)配置多個(gè)從庫(kù),以承擔(dān)更多的讀請(qǐng)求,或者應(yīng)用程序直接訪問(wèn)讀庫(kù),或者通過(guò)一個(gè)負(fù)載均衡軟件分發(fā)讀請(qǐng)求。寫入操作和一些讀操作仍然訪問(wèn)主庫(kù)。由于MySQL的復(fù)制是異步的,所以需要留意復(fù)制延時(shí)對(duì)讀寫分離的影響。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容