原来MySQl就是这样工作的
生活随笔
收集整理的這篇文章主要介紹了
原来MySQl就是这样工作的
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、MySQL簡單介紹 ? ? MySQL是當(dāng)今最流行的開源數(shù)據(jù)庫管理系統(tǒng),超過10億的下載量足可以證明這點(diǎn)。MySQL以其速度、高可靠性、簡單易用,廣泛應(yīng)用,一些大型企業(yè)也在逐漸應(yīng)用,如:Facebook、維基百科等網(wǎng)站。MySQL最早由瑞典的MySQL AB公司開發(fā),后于2008年被Sun收購,2009年Oracle公司收購了Sun公司。它分為社區(qū)版和商業(yè)版,其體積小、速度快、總體成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。其社區(qū)版的性能卓越,搭配PHP和Apache可組成良好的開發(fā)環(huán)境。 二、MySQL的基本組成部分流程圖:
<!--[endif]--> 流程圖詳解: ?
<!--[endif]--> 流程圖詳解: ?
?
? ? 一旦用戶具有連接的權(quán)限,那用戶就可以發(fā)一些SQL語句,而每一個SQL語句需要進(jìn)行分析,不同的語句需要分配給不同的解析器,因此就需要命令分發(fā)模塊,就把這些不同類型的語句分配給與之對應(yīng)的解析器上去。如果命令在分發(fā)之前是一個查詢語句,而且我們的緩存中有內(nèi)容,就可以直接返回給用戶結(jié)果了,因此也有可能會跟緩存模塊進(jìn)行交互。當(dāng)用戶發(fā)起一個命令之后,例如我們的web,當(dāng)用戶請求資源后,都會記錄在日志中的,因此命令分發(fā)模塊也有可能會和日志模塊進(jìn)行交互的,日志模塊的主要功能是記錄用戶查詢的。緩存模塊和日志模塊并不是并行的,命令分發(fā)模塊給兩者都有可能有交互的。 ? ? 如果緩存中沒有就要將用戶請求的命令分發(fā)出去,將命令交給解析器(解析查詢生成解析數(shù)),由解析器判斷命令最終屬于哪種語句,如果解析器解析此命令是select語句,需要交給優(yōu)化器進(jìn)行優(yōu)化。如果是update、insert、delete語句,需要交給表定義模塊(這一過程也要進(jìn)行權(quán)限的判斷)。mysql也有與repair相關(guān)的語句,那可想而知需要表維護(hù)模塊了,表維護(hù)模塊主要作用是修復(fù)表中的某些邏輯錯誤的。mysql中也有很多狀態(tài)變量,而這些狀態(tài)變量也需要狀態(tài)報告模塊來存儲每一個執(zhí)行過程中的狀態(tài)信息。mysql也有復(fù)制的功能,把主mysql服務(wù)器上的數(shù)據(jù)同步到從mysql服務(wù)器上的過程,這就是復(fù)制模塊的功能。 ? ? 無論哪個模塊,用戶最終要完成操作,必須要檢查用戶是否具有權(quán)限,上面所說的表定義模塊、表維護(hù)模塊都需要檢查用戶權(quán)限,因此最終這些命令語句都要交給訪問控制模塊來控制:用于檢驗客戶端用戶的操作是否具有足夠的操作權(quán)限,來執(zhí)行請求操作如果訪問模塊檢查后發(fā)現(xiàn)沒有任何問題,會把這些命令語句交給另一個組件表管理器,由表管理器完整真正意義上的操作,表管理器負(fù)責(zé)創(chuàng)建、讀取或修改表定義文件的。表管理器交給存儲引擎(存儲引擎的接口),存儲引擎交給最核心的-->MYISAM或INnoDB?
? ? 所有的用戶連接請求都是先發(fā)往連接管理器的,連接管理器(是一個偵聽器)用于偵聽來自客戶端的連接,并接受用戶請求,用戶請求被接收下來,而一個用戶請求需要一個線程來響應(yīng),因此需要一個線程管理器。線程管理器負(fù)責(zé)給用戶創(chuàng)建生成新的線程或完成線程重置的方式給用戶一個響應(yīng)線程,用戶連接進(jìn)來后需要檢查用戶權(quán)限(是否允許訪問mysql服務(wù)器等等權(quán)限)。這時就需要用戶模塊出場了,用戶模塊負(fù)責(zé)管理用戶是否能夠連接的,這是管理權(quán)限的第一關(guān),如果用戶不能請求,那用戶請求就終止了,因此用戶模塊還負(fù)責(zé)退回用戶請求(主要作用是驗證用戶請求和用戶身份的)。轉(zhuǎn)載于:https://blog.51cto.com/littershare/1194369
總結(jié)
以上是生活随笔為你收集整理的原来MySQl就是这样工作的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i++与++i的区别,使用实例说明
- 下一篇: zmail邮件系统安装手册 V2.0版本