黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 MySQL查詢執(zhí)行過程詳解

MySQL查詢執(zhí)行過程詳解

更新時間:2021-01-13 17:01:07 來源:動力節(jié)點 瀏覽1338次

查詢是用戶通過設(shè)置某些查詢條件,從表或其他查詢中選取全部或者部分數(shù)據(jù),以表的形式顯示數(shù)據(jù)供用戶瀏覽。查詢是一個獨立的、功能強大的、具有計算功能和條件檢索功能的數(shù)據(jù)庫對象。MySQL數(shù)據(jù)庫中,MySQL查詢同樣是數(shù)據(jù)庫的核心操作,下面我們一起來看看MySQL查詢執(zhí)行過程分為那幾個步驟?

 

一、執(zhí)行一個查詢過程概述

1.客戶端發(fā)送一條查詢給服務(wù)器;

2.服務(wù)器先檢查查詢緩存,如果命中了緩存,則立即返回存儲在緩存中的結(jié)果。否則進入下一階段;

3.服務(wù)器端進行SQL解析、預(yù)處理,再由優(yōu)化器生成對應(yīng)的執(zhí)行計劃;

4.MySQL根據(jù)優(yōu)化器生成的執(zhí)行計劃,調(diào)用存儲引擎的API來執(zhí)行查詢;

5.將結(jié)果返回給客戶端;

 

二、查詢緩存

1.查詢緩存保存查詢返回的完整結(jié)構(gòu);

2.命中查詢緩存時,MySQL會立即返回結(jié)果,跳過解析、優(yōu)化和執(zhí)行階段;

3.查詢緩存系統(tǒng)會跟蹤查詢中設(shè)計的每個表,如果這些表發(fā)生變化,和這個表相關(guān)的所有緩存數(shù)據(jù)都將失效;

4.判斷緩存是否命中時,不會進行解析查詢語句,直接使用MySQL語句和客戶端發(fā)送過來的其他原始信息,任何字符上的不同,例如空格、注解等,都會導(dǎo)致緩存不命中;

5.當(dāng)查詢語句有一些不確定的數(shù)據(jù)時,則不會被緩存;

6.查詢緩存配置參數(shù)

 

三、語法解析器和預(yù)處理器

1.MySQL解析器通過關(guān)鍵字將SQL語句進行解析,并生成對應(yīng)的解析樹;

2.MySQL解析器將使用MySQL語法規(guī)則驗證和解析查詢,eg:驗證是否使用錯誤的關(guān)鍵字、使用關(guān)鍵字的順序是否正確、驗證引號是否前后匹配等;

3.預(yù)處理器根據(jù)一些MySQL規(guī)則進行進一步檢查解析樹是否合法,eg:檢查數(shù)據(jù)表和數(shù)據(jù)列是否存在,解析名字和別名是否有歧義;

4.下一步預(yù)處理器驗證用戶權(quán)限,查看用戶是否有操作權(quán)限,通常很快;

 

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

1.優(yōu)化器的作用就是找到最好的執(zhí)行計劃;

2.語法樹被認為是合法后,優(yōu)化器將MySQL語句轉(zhuǎn)換為執(zhí)行計劃,一條查詢可以有多種執(zhí)行方式,最后都返回相同的結(jié)果;

3.生成執(zhí)行計劃過程

4.MySQL使用基于成本的優(yōu)化器(CBO cost-based optimizer),會預(yù)測一個查詢使用某種執(zhí)行計劃的成本,選擇其中成本最小的一個;

5.導(dǎo)致MySQL優(yōu)化器選擇非最優(yōu)執(zhí)行計劃的原因

6.MySQL可以處理的優(yōu)化類型

 

五、查詢執(zhí)行引擎

1.查詢執(zhí)行引擎根據(jù)執(zhí)行計劃來完成整個查詢;

2.執(zhí)行計劃是一個數(shù)據(jù)結(jié)構(gòu)(指令樹),不是和其他關(guān)系型數(shù)據(jù)庫那樣生成對應(yīng)的字節(jié)碼;

3.mysql根據(jù)執(zhí)行計劃給出的指令逐步執(zhí)行,在執(zhí)行過程中,有大量的操作需要調(diào)用存儲引擎實現(xiàn)的接口來完成,這些接口即為“handler API”;

4.查詢中每一個表由一個handler的實例表示。在優(yōu)化階段mysql就為每一個表創(chuàng)建了一個handler實例,優(yōu)化器可以根據(jù)這些實例的接口獲取表的相關(guān)信息,eg:列名、索引、統(tǒng)計信息等;

 

六、返回客戶端結(jié)果

1.如果查詢可以被緩存,mysql會在這個階段將結(jié)果存放到查詢緩存中;

2.mysql將結(jié)果集返回給客戶端是一個增量逐步返回的過程,在查詢生成第一條結(jié)果時,mysql就可以開始向客戶端逐步返回結(jié)果了;

3.增量逐步返回的好處:服務(wù)端無須存儲太多的結(jié)果,不會因為返回太多的結(jié)果而消耗太多內(nèi)存;同時讓客戶端第一時間獲得返回結(jié)果;

4.結(jié)果集中的每一行都會以一個滿足mysql客戶端/服務(wù)端通信協(xié)議的包發(fā)送,再通過tcp協(xié)議進行傳輸,傳輸過程中,可能對mysql的包進行緩存然后批量傳輸;

 

從以上內(nèi)容可以看出MySQL查詢執(zhí)行過程包括6個方面的內(nèi)容,這6個方向缺一不可,當(dāng)然在MySQL數(shù)據(jù)庫中,SQL語言提供了SELECT語句進行數(shù)據(jù)庫的查詢,該語句具有靈活的使用方式和豐富的功能。MySQL數(shù)據(jù)庫中,各種各樣的查詢語句也是十分重要的考點,小伙伴們可以在本站的MySQL教程中找到許多面試題,在學(xué)習(xí)的同時還能隨時檢驗自己的能力,何樂而不為!

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 一区二区三区中文字幕 | 国产日本在线视频 | 亚洲国产成人精品一区91 | 亚洲日本va中文字幕久久 | 欧美成人免费一级人片 | 毛片免费看看 | 午夜综合 | 成年视频xxxxx在线入口 | 色丝瓜视频| 2020亚洲欧美日韩在线观看 | 美日韩中文字幕 | 日日艹夜夜| 性xxxx中国| 成人18免费网站在线观看 | 亚洲日韩精品欧美一区二区 | 小明永久免费大陆在线观看 | 国产在线精品制服丝袜 | 欧美乱子伦xxxx12在线 | 99超级碰碰成人香蕉网 | 一二三四社区在线视频社区 | 日本污污网站 | 精品一区二区三区在线观看视频 | 黑色丝袜美女被网站 | 日日碰日日操 | 伊人五月婷婷 | 欧美日韩第二页 | 亚洲国产精 | 2020国产精品亚洲综合网 | 久久综合免费视频 | 黄色网络在线观看 | 99久9在线视频 | 亚洲第一天堂无码专区 | 你懂的在线视频播放 | 亚洲欧美日韩中文无线码 | 精品国产一区在线观看 | 美腿丝袜亚洲综合 | 欧美在线欧美 | 国产成人 免费观看 | 亚洲人成网站在线观看播放 | 天天综合色天天综合网 | 羞羞色在线 |