a. 將SQL語句進(jìn)行語義和語法分析,分解成數(shù)據(jù)結(jié)構(gòu),然后按照+同的操作類型進(jìn)行分類,做出針對(duì)性的轉(zhuǎn)發(fā)到后續(xù)步驟,以后SQL語句的傳遞和處理就是基于這個(gè)結(jié)構(gòu)的
b. 如果在分解構(gòu)成中遇到錯(cuò)誤,那么就說明這個(gè)sql語句是不合理的
Query Translation,Object Privilege
6.Optimizer(查詢優(yōu)化器)
SQL語句在查詢之前會(huì)使用查詢優(yōu)化器對(duì)查詢進(jìn)行優(yōu)化,就是優(yōu)化客戶端請(qǐng)求query,根據(jù)客戶端請(qǐng)求的query語句和數(shù)據(jù)庫中的一些統(tǒng)計(jì)信息,在一系列算法基礎(chǔ)上進(jìn)行分析,得出一個(gè)最優(yōu)策略,告訴后面的程序如何取得這個(gè)query語句的結(jié)果,使用的是 “選取-投影-聯(lián)接” 策略進(jìn)行查詢;<br/>比如:select uid,name from user where gender=1;<br/>這個(gè)查詢語句先根據(jù)where后面的語句進(jìn)行選取,而不是先將表全部查詢出來以后再進(jìn)行g(shù)ender過濾,然后根據(jù)uid和name進(jìn)行屬性投影,而不是將所有的屬性全部取出來以后再進(jìn)行過濾,最后將這兩個(gè)查詢條件聯(lián)接起來生成最終的查詢結(jié)果
Access Paths,Statistics
7.Cache 和 Buffer(查詢緩存)
主要功能是將客戶端提交給 Mysql 的 Select的類query請(qǐng)求的返回的結(jié)果集cache到內(nèi)存中,與該query的一個(gè)hash值做一個(gè)對(duì)應(yīng),該query所取數(shù)據(jù)的基表發(fā)生任何數(shù)據(jù)的變化之后,MySQL會(huì)自動(dòng)使該query的Cache失效,在讀寫比例非常高的的應(yīng)用系統(tǒng)中,Query Cache對(duì)性能的提高是非常顯著的,當(dāng)然它對(duì)內(nèi)存的消耗也是非常大的。<br/>如果查詢緩存中有有效的命中查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)據(jù),這個(gè)緩存機(jī)制是由一系列小緩存組成的,比如表緩存,記錄緩存,Key緩存,權(quán)限緩存等等