成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MySQL中SQL語句執(zhí)行流程是怎么樣的-創(chuàng)新互聯(lián)

這篇文章主要介紹MySQL中SQL語句執(zhí)行流程是怎么樣的,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司于2013年成立,先為龍亭等服務(wù)建站,龍亭等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為龍亭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

總的來說,MySQL邏輯架構(gòu)可以分為server層和存儲引擎層這兩個部分。這篇文章記錄的是SQL語句執(zhí)行流程,主要是發(fā)生在server層上面的事。

server層主要包括了MySQL數(shù)據(jù)庫大多數(shù)的功能,畢竟執(zhí)行SQL大部分是在這一層去實現(xiàn)的嘛^_^。這一層細分下來可以分為:查詢緩存(query cache 有的簡稱QC),解析器也可叫分析器,預(yù)處理器(其實也可以歸在分析器里面),查詢優(yōu)化器等。

存儲引擎層主要的工作是存儲、提取數(shù)據(jù)。當(dāng)前主要的存儲引擎種類有:InnoDB,MyISAM,tokuDB等,他們的區(qū)別如下:

MySQL中SQL語句執(zhí)行流程是怎么樣的

在InnoDB和MyISAM這兩種存儲引擎中,當(dāng)前使用較廣的是InnoDB,MyISAM由于不支持事務(wù),不支持行鎖等原因在8.0版本后已經(jīng)被徹底廢棄了。從MySQL5.5版本開始,InnoDB成為MySQL數(shù)據(jù)庫默認的存儲引擎。

先說結(jié)論吧,一條SQL語句從客戶端發(fā)起后,到MySQL數(shù)據(jù)庫,先會進行一系列驗證(比如查詢/更新權(quán)限),接著到查詢緩存,再到解析器,查詢優(yōu)化器,完成執(zhí)行語句的操作從存儲引擎中調(diào)取結(jié)果返回給客戶端。

一、連接&&驗證權(quán)限

MySQL的連接主要有兩種方式,一種是從服務(wù)器本地發(fā)起的,通過root用戶,使用socket登錄,還有一種是我們從客戶端發(fā)起的屬于遠程連接,一般來說遠程連接數(shù)據(jù)庫通常需要輸入的幾個要素:用戶名、密碼、端口號、IP地址。

連接首先驗證的是密碼是否正確,當(dāng)前用戶在當(dāng)前IP是否有權(quán)限登錄等,登錄完成后,該登錄用戶會具有當(dāng)前已分配給他的權(quán)限(增刪改查等)。

二、查詢緩存

上一步的驗證完成后,SQL執(zhí)行就會來到查詢緩存(query cache),看是否有執(zhí)行過該SQL語句緩存有該SQL執(zhí)行結(jié)果,如果有,直接取出結(jié)果返回給客戶端,如果沒有則進行下一步的查詢。

不可否認,如果每次都能在查詢緩存中獲取數(shù)據(jù),這個效率是很高的。但是對于實際應(yīng)用中,并不建議使用查詢緩存。因為查詢緩存只能針對靜態(tài)數(shù)據(jù)不能針對動態(tài)數(shù)據(jù),很可能好不容易緩存好的數(shù)據(jù),其中有表發(fā)生了更新,一下子緩存好的數(shù)據(jù)就被清掉了。而在8.0版本后,這功能也被徹底廢棄了,在8.0之前的版本一般是建議關(guān)閉查詢緩存功能的。

三、解析器

在第二步的查詢緩存中沒能獲取或者說沒能命中查詢緩存,就會首先進行SQL解析,包含語法,語義解析:是要進行查詢還是更新操作,語句寫的有沒問題之類的,生成一個解析樹,提交給下一步。

四、預(yù)處理器(其實也可以歸在解析器里面)

將第三步中解析過的解析樹進行預(yù)處理,相對于第三部來說會進行更深層次的判斷,比如表/列是否存在之類的,會把解析樹處理為更為平衡的平衡樹結(jié)構(gòu)。

五、查詢優(yōu)化器

預(yù)處理完成后,來到查詢優(yōu)化器,這里決定了比如走哪個索引等,轉(zhuǎn)化前面的平衡樹為執(zhí)行計劃,并選出一個數(shù)據(jù)庫認為是最優(yōu)的執(zhí)行計劃進行SQL的執(zhí)行。

六、SQL執(zhí)行

從存儲引擎層調(diào)取需要的數(shù)據(jù),返回給客戶端,至此,流程結(jié)束。

以上是“MySQL中SQL語句執(zhí)行流程是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

文章標(biāo)題:MySQL中SQL語句執(zhí)行流程是怎么樣的-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://jinyejixie.com/article6/hgcog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、建站公司、企業(yè)建站、服務(wù)器托管、商城網(wǎng)站、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
高台县| 峨边| 黄大仙区| 潞城市| 洪雅县| 龙南县| 平泉县| 泸州市| 泰顺县| 蒲江县| 鄂伦春自治旗| 华池县| 习水县| 锡林郭勒盟| 扶沟县| 门头沟区| 汉寿县| 福州市| 肥东县| 兴城市| 漠河县| 康平县| 特克斯县| 彰化县| 高陵县| 宜黄县| 盘山县| 渭源县| 湘阴县| 扎鲁特旗| 澳门| 普定县| 江油市| 阿坝县| 南汇区| 广宁县| 油尖旺区| 建阳市| 涟源市| 乐业县| 曲松县|