最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql邏輯架構(gòu)詳解

 更新時(shí)間:2019年01月10日 14:38:46   作者:qq_43193797  
今天小編就為大家分享一篇關(guān)于Mysql邏輯架構(gòu)詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

1. 整體架構(gòu)圖

和其它數(shù)據(jù)庫(kù)相比,MySQL有點(diǎn)與眾不同,它的架構(gòu)可以在多種不同場(chǎng)景中應(yīng)用并發(fā)揮良好作用。主要體現(xiàn)在存儲(chǔ)引擎的架構(gòu)上,插件式的存儲(chǔ)引擎架構(gòu)將查詢(xún)處理和其它的系統(tǒng)任務(wù)以及數(shù)據(jù)的存儲(chǔ)提取相分離。這種架構(gòu)可以根據(jù)業(yè)務(wù)的需求和實(shí)際需要選擇合適的存儲(chǔ)引擎。

各層介紹:

1.1 連接層

最上層是一些客戶端和連接服務(wù),包含本地sock通信和大多數(shù)基于客戶端/服務(wù)端工具實(shí)現(xiàn)的類(lèi)似于tcp/ip的通信。主要完成一些類(lèi)似于連接處理、授權(quán)認(rèn)證、及相關(guān)的安全方案。在該層上引入了線程池的概念,為通過(guò)認(rèn)證安全接入的客戶端提供線程。同樣在該層上可以實(shí)現(xiàn)基于SSL的安全鏈接。服務(wù)器也會(huì)為安全接入的每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限。

1.2 服務(wù)層

1.3.引擎層

存儲(chǔ)引擎層,存儲(chǔ)引擎真正的負(fù)責(zé)了MySQL中數(shù)據(jù)的存儲(chǔ)和提取,服務(wù)器通過(guò)API與存儲(chǔ)引擎進(jìn)行通信。不同的存儲(chǔ)引擎具有的功能不同,這樣我們可以根據(jù)自己的實(shí)際需要進(jìn)行選取。

1.4.存儲(chǔ)層

數(shù)據(jù)存儲(chǔ)層,主要是將數(shù)據(jù)存儲(chǔ)在運(yùn)行于裸設(shè)備的文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互。

2. show profile

利用show profile可以查看sql的執(zhí)行周期!

2.1 開(kāi)啟profile

查看profile是否開(kāi)啟:show variables  like '%profiling%'

如果沒(méi)有開(kāi)啟,可以執(zhí)行set profiling=1開(kāi)啟!

2.2 使用profile

執(zhí)行show prifiles命令,可以查看最近的幾次查詢(xún)。

根據(jù)Query_ID,可以進(jìn)一步執(zhí)行show profile cpu,block io for query Query_id來(lái)查看sql的具體執(zhí)行步驟。

2.3 大致的查詢(xún)流程

mysql的查詢(xún)流程大致是:

mysql客戶端通過(guò)協(xié)議與mysql服務(wù)器建連接,發(fā)送查詢(xún)語(yǔ)句,先檢查查詢(xún)緩存,如果命中,直接返回結(jié)果,否則進(jìn)行語(yǔ)句解析,也就是說(shuō),在解析查詢(xún)之前,服務(wù)器會(huì)先訪問(wèn)查詢(xún)緩存(query cache)——它存儲(chǔ)SELECT語(yǔ)句以及相應(yīng)的查詢(xún)結(jié)果集。如果某個(gè)查詢(xún)結(jié)果已經(jīng)位于緩存中,服務(wù)器就不會(huì)再對(duì)查詢(xún)進(jìn)行解析、優(yōu)化、以及執(zhí)行。它僅僅將緩存中的結(jié)果返回給用戶即可,這將大大提高系統(tǒng)的性能。

語(yǔ)法解析器和預(yù)處理:首先mysql通過(guò)關(guān)鍵字將SQL語(yǔ)句進(jìn)行解析,并生成一顆對(duì)應(yīng)的“解析樹(shù)”。mysql解析器將使用mysql語(yǔ)法規(guī)則驗(yàn)證和解析查詢(xún);預(yù)處理器則根據(jù)一些mysql規(guī)則進(jìn)一步檢查解析數(shù)是否合法。

查詢(xún)優(yōu)化器當(dāng)解析樹(shù)被認(rèn)為是合法的了,并且由優(yōu)化器將其轉(zhuǎn)化成執(zhí)行計(jì)劃。一條查詢(xún)可以有很多種執(zhí)行方式,最后都返回相同的結(jié)果。優(yōu)化器的作用就是找到這其中最好的執(zhí)行計(jì)劃。。

然后,mysql默認(rèn)使用的BTREE索引,并且一個(gè)大致方向是:無(wú)論怎么折騰sql,至少在目前來(lái)說(shuō),mysql最多只用到表中的一個(gè)索引。

2.4 SQL的執(zhí)行順序

手寫(xiě)的順序:

真正執(zhí)行的順序:

隨著Mysql版本的更新?lián)Q代,其優(yōu)化器也在不斷的升級(jí),優(yōu)化器會(huì)分析不同執(zhí)行順序產(chǎn)生的性能消耗不同而動(dòng)態(tài)調(diào)整執(zhí)行順序。下面是經(jīng)常出現(xiàn)的查詢(xún)順序:

2.5 MyISAM和InnoDB

show engines:查看所有的數(shù)據(jù)庫(kù)引擎

show variables like '%storage_engine%' 查看默認(rèn)的數(shù)據(jù)庫(kù)引擎

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

最新評(píng)論

额济纳旗| 白朗县| 天峻县| 蒲江县| 察雅县| 黄石市| 盘锦市| 湖口县| 五台县| 天柱县| 寻乌县| 永宁县| 团风县| 宣武区| 忻城县| 梁山县| 荣成市| 广河县| 孙吴县| 仁布县| 肥城市| 叶城县| 泗水县| 乃东县| 新晃| 上饶县| 行唐县| 汉寿县| 那曲县| 饶阳县| 宜君县| 青铜峡市| 平遥县| 满洲里市| 远安县| 晋州市| 三江| 永宁县| 昭苏县| 噶尔县| 连平县|