? mysql作為一個開源的關系型數(shù)據(jù)庫错负,融合了這個社會的縮影坟瓢。
? 我們在看護下成長或獨自生根發(fā)芽勇边、解決生活的煩惱,然后組成另一個家庭折联。也會在社會中由一席之地粒褒。
個體
家庭(數(shù)據(jù)庫)中每個人都有著重要的任務:
連接器:連接器要管理鏈接,權限驗證诚镰。
查詢緩存:命中數(shù)據(jù)直接返回奕坟,但是聽說老了退休了。
分析器:分析器詞法分析清笨,語法分析执赡。
優(yōu)化器:優(yōu)化器確定最后的執(zhí)行計劃,并挑選出執(zhí)行索引函筋。
執(zhí)行器:執(zhí)行器操作存儲引擎沙合,返回操作結果。
他們就像一個工廠中的流水線工人跌帐,將客人(客戶端)的訂單(請求)順序執(zhí)行首懈,然后放入機器(存儲引擎)。
家庭
家庭(數(shù)據(jù)庫)協(xié)作很重要谨敛,每個人都不可替代
-
連接器
第一步究履,
用戶
會先和這個家庭
建立聯(lián)系,這個時候對外的是連接器
脸狸,連接器
負責和用戶建立聯(lián)系最仑,校驗權限,維持和管理雙方的聯(lián)系炊甲。一般會寫出這樣一封信:
mysql -h$ip -P$port -u$user -p
當雙方建立通信(TCP握手)后泥彤,連接器就會確認對方信息,如果發(fā)現(xiàn)不是授權用戶卿啡,就會返回一個“Access denied for user”吟吝。
連接器也會思考和用戶的通信狀態(tài),比如確定自己是否是空閑的颈娜,如果空閑就豎起一個“sleep”的牌子剑逃,但是一旦休息超過8小時時(默認值),就主動斷開和這個用戶的通信官辽。如果客戶在斷開后再次請求連接蛹磺,就會收到一個“Lost connection to MySQL server during query⊥停”的回信萤捆,告知通信已經斷開。
連接器一直在思考到底應該要和客戶建立多久的連接才是合理的,他希望相對高效的完成自己的任務鳖轰。如果一直不斷開清酥,那么就無法接待下一位客戶,明顯是不合理的蕴侣;如果時間太短焰轻,會導致權限和連接浪費性能和時間。
臨時方案就是定期的斷開大連接昆雀,這樣消耗減少了很多辱志。
推陳出新的連接器在第5.7版本拿出了這樣一個解決方式:每次在大操作(時間,空間)后狞膘,讓連接初始化(釋放內存)揩懒,因為相互通信沒有斷,那么久可以不用建立連接和校驗了挽封。
-
查詢緩存
建立完連接后已球,我們來到了第二部,訪問查詢緩存辅愿。
每次建立連接完畢后智亮,家里會在查詢緩存老爺子這看看看。老爺子像一個門衛(wèi)点待,之前登記過的信件和回信會登記在他的小笨笨上面阔蛉。如果之前已經用相同的拜訪者或者信件,老爺子就直接回信了癞埠。他認為放進去無在乎讓他重新登記一次相同的數(shù)據(jù)状原,這樣是很讓費精力(性能)的。
但是在訪問人數(shù)越來越多時苗踪,老爺子已經判斷不了是否自己能夠承接這個任務了颠区,小本本越來越厚,改動越來越頻繁徒探。老爺子也到了要退休的年齡了瓦呼。
到了8.0版本時喂窟,老爺子(查詢緩存)退休了测暗。
-
分析器
下一棒投遞到了分析器,他就像一個摩斯密碼的翻譯者磨澡,將信件翻譯成機器(存儲引擎)認識的語言碗啄。
分析器會將信件(任務)拆解為行為(select代表查詢,update代表修改)稳摄。
將執(zhí)行內容轉化為自己的工作語言(比如將 name = ‘’張三“稚字,識別為等于張三的列name)。
將重組后的語言進行賽選(語法分析),并判斷是否有這些執(zhí)行節(jié)點(表胆描,字段)瘫想,不合理的信件直接回信”You have an error in your SQL syntax“。
-
優(yōu)化器
結束了分析器的工作昌讲,客戶的寄信目的已經非常明確了国夜,但是可能還是不夠合理或者詳細,這時候優(yōu)化器就會代替客戶在分析器翻譯后的文章上用“更專業(yè)”的方式描述信件內容短绸。
他會判斷客戶的形容詞(索引)是否準確车吹,是否可以替換(優(yōu)化),有多個形容詞時醋闭,哪一個才是客戶強調的重點窄驹,是否有客戶忽略了的問題。
他會分析客戶敘述場景的方式(順序)证逻,幫客戶選出相對合理的執(zhí)行流程(順序)乐埠。
-
執(zhí)行器
現(xiàn)在客戶的需求已經非常明確了,并且已經擁有了明確的工作流執(zhí)行文本囚企,交給執(zhí)行器的只剩執(zhí)行了饮戳。
執(zhí)行器會判斷客戶是否有這個工作內容的執(zhí)行節(jié)點的權限(表權限),如果權限不合理就會回信“ERROR 1142 (42000): *** command denied to user 'b'@'localhost' for table 'T'”
判斷完畢后洞拨,執(zhí)行器會操作(調用)存儲引擎扯罐,執(zhí)行文本邏輯,并將執(zhí)行結果寫信寄出烦衣。
在家庭各成員緊密的配合下歹河,每個成員成為了不可或缺的組成分子。
他們在明確的分工下完成自己的任務花吟。
可能會有新的生命誕生秸歧,也會有退休的那一天。