本篇文章給大家分享的是有關(guān)如何搭建MySQL邏輯架構(gòu),小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
我們注重客戶提出的每個要求,我們充分考慮每一個細(xì)節(jié),我們積極的做好成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),我們努力開拓更好的視野,通過不懈的努力,創(chuàng)新互聯(lián)贏得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵著我們更好的服務(wù)客戶。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計,微信平臺小程序開發(fā),網(wǎng)站開發(fā),技術(shù)開發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫的技術(shù)開發(fā)工程師。
如果能在頭腦中構(gòu)建出一幅MySQL各組件之間如何協(xié)同工作的架構(gòu)圖,就會有助于深入理解MySQL服務(wù)器
第一層的服務(wù)并不是MySQL所獨(dú)有的,大多數(shù)基于網(wǎng)絡(luò)的客戶端、服務(wù)器的工具或者服務(wù)都有類似的架構(gòu)。比如連接處理、授權(quán)認(rèn)證、安全等等。這里的客戶端可以理解為PHP,python,java
第二層架構(gòu)是MySQL大多數(shù)核心服務(wù)功能,包括查詢解析,分析,優(yōu)化,緩存以及所有的內(nèi)置函數(shù)(日期,時間,數(shù)字和加密函數(shù))所有跨存儲引擎的功能都在這一層實(shí)現(xiàn):存儲過程,觸發(fā)器,視圖等
第三層包含了存儲引擎。存儲引擎負(fù)責(zé)MySQL中數(shù)據(jù)的存儲和提取。和GNU/Linux下的各個文件系統(tǒng)一樣,每個存儲引擎都有它的優(yōu)勢和劣勢。服務(wù)器通過api與存儲引擎進(jìn)行通信。這些接口屏蔽了不同存儲引擎之間的差異,使得這些差異對上層的查詢過程透明。存儲引擎API包含幾十個底層函數(shù),用于執(zhí)行諸如“開始一個事物”或者“根據(jù)主鍵提取一行記錄”但是存儲引擎不會去解析SQL,不同的存儲引擎也不會相互通信,而只是簡單地響應(yīng)上層服務(wù)器的請求。
通過命令net start mysql(windows) / service mysql start(linux)啟動MySQL服務(wù)
調(diào)用初始模塊;初始化模塊就是在數(shù)據(jù)庫啟動的時候,對整個數(shù)據(jù)庫做的一些初始化操作,比如各種系統(tǒng)環(huán)境變量的初始化,各種緩存,存儲引擎初始化設(shè)置等。
核心api:MySQL數(shù)據(jù)庫核心api主要實(shí)現(xiàn)了數(shù)據(jù)庫底層操作的優(yōu)化功能,其中主要包括IO操作、格式化輸出、高性能存儲數(shù)據(jù)結(jié)果算法的優(yōu)化,字符串的處理,其中最重要的是內(nèi)存管理。
用戶發(fā)送一條SQL,這個時候會被網(wǎng)絡(luò)交互模塊監(jiān)聽到用戶的操作請求,傳遞給‘連接管理模塊’
接收到請求轉(zhuǎn)發(fā)到‘進(jìn)/線程連接模塊’
調(diào)用‘用戶模塊’來進(jìn)行權(quán)限檢測(訪問數(shù)據(jù)庫的權(quán)限)
通過檢測之后就會去‘連接進(jìn)/線程模塊’從‘線程連接池’中查找空閑的被緩存的連接線程和客戶端請求對接,如果失敗則創(chuàng)建一個新的連接請求
返回連接線程
網(wǎng)絡(luò)交互模塊:對外提供可以接收和發(fā)送數(shù)據(jù)的api接口,其他模塊需要交互的時候,可以通過api接口調(diào)用
連接管理模塊、進(jìn)/線程連接模塊、線程連接池:連接管理模塊負(fù)責(zé)監(jiān)聽MySQL Server的各種請求,根據(jù)不同的請求,然后轉(zhuǎn)發(fā)到線程管理模塊,每個客戶請求都會被數(shù)據(jù)庫自動分配一個獨(dú)立的線程為其單獨(dú)服務(wù),而連接線程的主要工作就是負(fù)責(zé)MySQL Server與客戶端通信,線程管理模塊負(fù)責(zé)管理這些生成的線程。
在用戶權(quán)限校驗(yàn)成功之后,并且獲得新的連接池之后就會去‘命令分發(fā)器’,判斷命令的類型如果是select就會去訪問‘查詢緩存’,如果沒有就會往下執(zhí)行;
如果是select,并且開啟’查詢緩存’之后就會去緩存中查詢是否有與之相匹配的SQL,如果有就會校驗(yàn)用戶訪問該數(shù)據(jù)的權(quán)限,通過就返回不通過就會返回錯誤信息. 如果數(shù)據(jù)沒有就會往下執(zhí)行
會記錄過程中的SQL操作過程到日志文件中
在第8,9步 沒有滿足相應(yīng)條件之后往下執(zhí)行進(jìn)入 ‘命令解析器’,經(jīng)過詞法分析,語法分析后生成解析樹
根據(jù)操作轉(zhuǎn)到對應(yīng)的模塊處理(預(yù)處理階段),根據(jù)SQL選擇執(zhí)行的模塊
模塊收到請求后,通過’訪問控制模塊’檢查所連接的用戶是否有訪問目標(biāo)表和目標(biāo)字段的權(quán)限(是指訪問這些數(shù)據(jù)的權(quán)限)
有權(quán)限’表管理模塊’先查看table cache中是否存在,有則直接對應(yīng)的表和獲取鎖,負(fù)責(zé)重新打開表文件
根據(jù)表的ENGINE數(shù)據(jù),獲取表的存儲引擎類型等信息
通過接口調(diào)用對應(yīng)的存儲引擎處理
返回查詢之后數(shù)據(jù)內(nèi)容
用戶模塊:主要功能是用于控制用戶登入連接的權(quán)限和用戶授權(quán)管理。
訪問控制模塊:主要用于監(jiān)控用戶的每一個操作。訪問控制模塊實(shí)現(xiàn)的功能就是根據(jù)用戶模塊中不同的用戶授權(quán),以及根據(jù)其數(shù)據(jù)庫的各種約束來控制用戶對數(shù)據(jù)的訪問。用戶模塊和訪問控制模塊結(jié)合起來,就組成了MySQL數(shù)據(jù)庫的權(quán)限管理功能。
查詢優(yōu)化器:這個模塊主要是講客戶端發(fā)送的查詢請求,在之前算法的基礎(chǔ)上分析,計算出一個最優(yōu)的查詢策略,優(yōu)化之后會提高查詢訪問的速度,最后根據(jù)其最優(yōu)策略返回查詢語句。
表變更管理模塊:主要負(fù)責(zé)完成DML和DDl的查詢,列如,insert,update,delete,create table,alter table等語句處理。
表維護(hù)模塊:主要用于檢測表的狀態(tài),分析,優(yōu)化表結(jié)構(gòu),以及修復(fù)表。
復(fù)制模塊:復(fù)制模塊分為Master模塊和Slave模塊兩部分。Master模塊主要負(fù)責(zé)復(fù)制環(huán)境中讀取Master端的binary日志,以及Slave端的I/O線程交互等工作。
狀態(tài)模塊:在客戶端請求系統(tǒng)狀態(tài)的時候,系統(tǒng)狀態(tài)模塊主要負(fù)責(zé)將各種狀態(tài)的數(shù)據(jù)返回給用戶。最常用的一些查詢狀態(tài)的命令包括show status,show variable等,都是通過這個模塊負(fù)責(zé)返回的。
表管理模塊:主要就是維護(hù)系統(tǒng)生成的表文件。列如MyISAM存儲引擎就生成frm,myd,myi文件,維護(hù)這些文件,將這個表結(jié)構(gòu)的信息緩存起來,另外該模塊還管理表級別的鎖。
存儲引擎接口模塊:MySQL實(shí)現(xiàn)了其數(shù)據(jù)庫底層存儲引擎的插件式管理,將各種數(shù)據(jù)處理高度抽象化。
命令執(zhí)行完了之后,將結(jié)果集返回給’理解進(jìn)/線程模塊’(返回的也可以是相應(yīng)標(biāo)識,成功失敗)
'理解進(jìn)/線程模塊’進(jìn)行后續(xù)的清理工作,并繼續(xù)等待請求或斷開與客戶端的連接
以上就是如何搭建MySQL邏輯架構(gòu),小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
名稱欄目:如何搭建MySQL邏輯架構(gòu)
網(wǎng)頁路徑:http://chinadenli.net/article10/poopgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站排名、云服務(wù)器、品牌網(wǎng)站制作、網(wǎng)頁設(shè)計公司、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)