大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

更新時(shí)間:2021-01-13 17:01:07 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1335次

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

 

一、執(zhí)行一個(gè)查詢過(guò)程概述

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

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

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

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

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

 

二、查詢緩存

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

3.生成執(zhí)行計(jì)劃過(guò)程

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

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

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

 

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

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

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

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

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

 

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

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

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

3.增量逐步返回的好處:服務(wù)端無(wú)須存儲(chǔ)太多的結(jié)果,不會(huì)因?yàn)榉祷靥嗟慕Y(jié)果而消耗太多內(nèi)存;同時(shí)讓客戶端第一時(shí)間獲得返回結(jié)果;

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

 

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

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本色图在线 | 四虎影视免费永久在线观看黄 | 久久精品国产亚洲妲己影院 | 性猛交╳xxx乱大交 性猛交毛片 | 欧美日韩在线观看区一二 | 天天摸夜夜摸爽爽狠狠婷婷97 | 99热首页| 模特啪啪 | 日本精品高清一区二区不卡 | 青青青国产在线手机免费观看 | 亚洲专区一路线二 | 久久国产精品久久久久久 | 欧美精品免费在线 | 午夜久久久精品 | 狠狠色丁香婷婷久久综合2021 | 日韩亚洲精品不卡在线 | 高清一区二区三区 | 久久久精品久久久久久久久久久 | 欧美黄一片 | 国产高清在线精品一区a | 天天碰天天摸天天操 | 国外成人在线视频 | 欧美洲精品亚洲精品中文字幕 | 久久亚洲一级α片 | 欧美中文字幕在线看 | 成人性a激情免费视频 | 欧美中文字幕一区 | 国产1区2区三区不卡 | 亚洲成人精品在线 | a一级网站 | 久久大香香蕉国产免费网站 | 国产精品尹人在线观看免费 | 日日干日日| 成年女人在线观看 | 91香蕉福利一区二区三区 | 亚洲精品毛片久久久久久久 | 青青久久国产成人免费网站 | 久久88色综合色鬼 | 国产骚b | 亚洲欧美日韩中字综合 | 久久精品国产麻豆不卡 |