本文主要給大家簡單講講MySQL邏輯架構(gòu)入門介紹,相關(guān)專業(yè)術(shù)語大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL邏輯架構(gòu)入門介紹這篇文章可以給大家?guī)硪恍?shí)際幫助。

一、邏輯架構(gòu)圖
MySQL邏輯架構(gòu)整體分為四層:

第一層是鏈接線程處理,這一層并非MySQL獨(dú)有,在這一層中,主要功能有鏈接處理,授權(quán)驗(yàn)證,安全等操作。
第二層是MySQL主要層,所有的語句解析、分析、優(yōu)化和緩存都在這一層進(jìn)行,同時(shí)內(nèi)建函數(shù),如日期、時(shí)間等函數(shù)也在這一層進(jìn)行。
第三層中所有的跨存儲(chǔ)引擎的功能都在該層完成,例如視圖、存儲(chǔ)過程等。
第四層為存儲(chǔ)引擎,負(fù)責(zé)數(shù)據(jù)的獲取和存儲(chǔ)。在該層提供了許多API供上層服務(wù)層調(diào)用,完成數(shù)據(jù)操作。
工作過程:
每一個(gè)客戶端發(fā)起一個(gè)新的請求都會(huì)由云服務(wù)器端的連接線程處理層接收客戶端的請求并開辟一個(gè)新的內(nèi)存空間,在該空間內(nèi)生成一個(gè)新的線程,當(dāng),當(dāng)每一個(gè)用戶連接到云服務(wù)器端的時(shí)候就會(huì)在進(jìn)程地址空間內(nèi)生成一個(gè)新的線程用于響應(yīng)客戶端請求,用戶發(fā)起的查詢請求都在線程空間內(nèi)運(yùn)行,結(jié)果也在這里面緩存并返回給云服務(wù)器端。最后線程的銷毀和重用都是由連接線程處理管理器完成的。
二、MySQL查詢過程
如下圖所示:

1、客戶端/云服務(wù)器通信協(xié)議
該部分為半雙工狀態(tài),要么是客戶端向云服務(wù)器發(fā)送數(shù)據(jù),要么是云服務(wù)器向半雙工發(fā)送數(shù)據(jù),二者不能同時(shí)進(jìn)行。
當(dāng)客戶端向云服務(wù)器發(fā)送數(shù)據(jù)時(shí)以單獨(dú)一個(gè)數(shù)據(jù)包的形式發(fā)送,若查詢太大,云服務(wù)器會(huì)拒絕接收更多的數(shù)據(jù),并拋出異常;
當(dāng)云服務(wù)器端向客戶端發(fā)送數(shù)據(jù)包時(shí),一般包括多個(gè)數(shù)據(jù)包。客戶端必須完整的接收所有的數(shù)據(jù),不能拒絕接收部分?jǐn)?shù)據(jù)只獲取前幾條。在開發(fā)過程中應(yīng)該盡量保持簡單和必要的查詢,這也是減少select *和加上limit限制的原因。
2、查詢緩存
在解析查詢語句之前,如果開啟了查詢緩存,MySQL會(huì)檢查當(dāng)前查詢是否命中緩存中的數(shù)據(jù),如果命中會(huì)直接將緩存中的數(shù)據(jù)響應(yīng)給客戶端,否則會(huì)執(zhí)行后面的解析等操作。
MySQL的緩存存放在一個(gè)引用表中,以一個(gè)哈希值作為索引。該索引包含了一系列與查詢有關(guān)的信息,例如查詢本身、要查詢的表等。如果兩個(gè)查詢在任何一個(gè)字符上有所不同就不會(huì)命中緩存。當(dāng)然,不是所有的查詢都會(huì)存在緩存中,當(dāng)查詢語句中包含函數(shù)、用戶變量、臨時(shí)表時(shí)就不會(huì)存入緩存。例如,一個(gè)查詢語句中包含NOW()函數(shù),不同的時(shí)間查詢會(huì)有不同的查詢結(jié)果,存入緩存毫無意義,所以該查詢就不會(huì)被存入緩存。
MySQL的緩存也存在失效的狀態(tài),所有會(huì)影響查詢結(jié)果的信息都會(huì)糅合進(jìn)一個(gè)哈希值作為索引,所以當(dāng)某一個(gè)表的數(shù)據(jù)或者結(jié)構(gòu)發(fā)生變化時(shí),該表所涉及到的所有緩存都會(huì)失效。即對(duì)某表執(zhí)行寫操作時(shí),該表所涉及到的緩存就會(huì)被設(shè)置為失效。當(dāng)查詢緩存非常大時(shí),這個(gè)操作會(huì)造成較大的系統(tǒng)消耗。在讀操作時(shí),每一個(gè)查詢語句執(zhí)行前都會(huì)檢查是否命中緩存,執(zhí)行后都會(huì)存入緩存。是否打開緩存應(yīng)慎之又慎。
3、語法解析及預(yù)處理
語法解析會(huì)將查詢語句進(jìn)行解析生成一顆解析樹,這個(gè)過程主要是通過語法進(jìn)行檢查。預(yù)處理會(huì)將解析樹再次進(jìn)行解析,會(huì)檢查查詢所包含的表、列等是否存在。
4、查詢優(yōu)化
一條語句有多中實(shí)現(xiàn)方式,優(yōu)化器的作用就是評(píng)估某種執(zhí)行成本并且選擇成本最小的那一個(gè)。當(dāng)然,我們所預(yù)想的執(zhí)行方式,不一定就是MySQL真正的執(zhí)行方式。優(yōu)化器會(huì)對(duì)執(zhí)行順序進(jìn)行重新排序并執(zhí)行,選出MySQL認(rèn)為的最優(yōu)解。
MySQL的查詢優(yōu)化器是一個(gè)非常復(fù)雜的部件,它使用了非常多的優(yōu)化策略來生成一個(gè)最優(yōu)的執(zhí)行計(jì)劃: 1. 重新定義表的關(guān)聯(lián)順序(多張表關(guān)聯(lián)查詢時(shí),并不一定按照SQL中指定的順序進(jìn)行,但有一些技巧可以指定關(guān)聯(lián)順序)
2. 優(yōu)化MIN()和MAX()函數(shù)(找某列的最小值,如果該列有索引,只需要查找B+Tree索引最左端,反之則可以找到大值,具體原理見下文)
3. 提前終止查詢(比如:使用Limit時(shí),查找到滿足數(shù)量的結(jié)果集后會(huì)立即終止查詢)
4. 優(yōu)化排序(在老版本MySQL會(huì)使用兩次傳輸排序,即先讀取行指針和需要排序的字段在內(nèi)存中對(duì)其排序,然后再根據(jù)排序結(jié)果去讀取數(shù)據(jù)行,而新版本采用的是單次傳輸排序,也就是一次讀取所有的數(shù)據(jù)行,然后根據(jù)給定的列排序。對(duì)于I/O密集型應(yīng)用,效率會(huì)高很多)
5、查詢執(zhí)行引擎
查詢執(zhí)行引擎會(huì)根據(jù)優(yōu)化階段生成的執(zhí)行計(jì)劃,依次執(zhí)行并給出結(jié)果。這些主要實(shí)現(xiàn)方式是通過調(diào)用存儲(chǔ)引擎的API實(shí)現(xiàn),這些API提供了強(qiáng)大的功能,通過疊加等操作實(shí)現(xiàn)查詢。
6、響應(yīng)給客戶端
無論是否有查詢結(jié)果,都會(huì)返回給客戶端,包括影響到行數(shù)、執(zhí)行時(shí)長等等。
此時(shí)若查詢緩存打開,會(huì)將查詢結(jié)果存入緩存。
當(dāng)有查詢結(jié)果時(shí),返回的結(jié)果集是一個(gè)增量過程。mysql可能在生成的第一條結(jié)果時(shí)就會(huì)將結(jié)果返回給客戶端,客戶端不斷接收直至完畢。服務(wù)端無需存儲(chǔ)結(jié)果集占用內(nèi)存客戶端也可以第一時(shí)間接收到結(jié)果。
MySQL邏輯架構(gòu)入門介紹就先給大家講到這里,對(duì)于其它相關(guān)問題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:MySQL邏輯架構(gòu)入門介紹-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.chinadenli.net/article24/djdhce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、服務(wù)器托管、網(wǎng)站導(dǎo)航、定制網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容