《簡單MySQL教程一》要點(diǎn):
本文介紹了簡單MySQL教程一,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
一、和其它數(shù)據(jù)庫相比,MySQL有點(diǎn)與眾分歧,它的架構(gòu)可以在多種分歧場(chǎng)景中應(yīng)用并發(fā)揮良好作用.主要體現(xiàn)在存儲(chǔ)引擎的架構(gòu)上,
插件式的存儲(chǔ)引擎架構(gòu)將查詢處理和其它的系統(tǒng)任務(wù)以及數(shù)據(jù)的存儲(chǔ)提取相分離.這種架構(gòu)可以根據(jù)業(yè)務(wù)的需求和實(shí)際必要選擇合適的存儲(chǔ)引擎.
1.銜接層
最上層是一些客戶端和連接服務(wù),包含本地sock通信和大多數(shù)基于客戶端/服務(wù)端工具實(shí)現(xiàn)的類似于tcp/ip的通信.主要完成一些類似于連接處理、授權(quán)認(rèn)證、及相關(guān)的平安方案.在該層上引入了線程池的概念,為通過認(rèn)證平安接入的客戶端提供線程.同樣在該層上可以實(shí)現(xiàn)基于SSL的平安鏈接.服務(wù)器也會(huì)為平安接入的每個(gè)客戶端驗(yàn)證它所具有的操作權(quán)限.
2.服務(wù)層
第二層架構(gòu)主要完成大多的核心服務(wù)功能,如SQL接口,并完成緩存的查詢,SQL的分析和優(yōu)化及部分內(nèi)置函數(shù)的執(zhí)行.所有跨存儲(chǔ)引擎的功能也在這一層實(shí)現(xiàn),如過程、函數(shù)等.在該層,服務(wù)器會(huì)解析查詢并創(chuàng)建相應(yīng)的內(nèi)部解析樹,并對(duì)其完成相應(yīng)的優(yōu)化如確定查詢表的順序,是否利用索引等,最后生成相應(yīng)的執(zhí)行操作.如果是select語句,服務(wù)器還會(huì)查詢內(nèi)部的緩存.如果緩存空間足夠大,這樣在辦理大量讀操作的環(huán)境中能夠很好的提升系統(tǒng)的性能.
3.引擎層
存儲(chǔ)引擎層,存儲(chǔ)引擎真正的負(fù)責(zé)了MySQL中數(shù)據(jù)的存儲(chǔ)和提取,服務(wù)器通過API與存儲(chǔ)引擎進(jìn)行通信.不同的存儲(chǔ)引擎具有的功能不同,這樣我們可以根據(jù)本身的實(shí)際需要進(jìn)行選取.后面介紹MyISAM和InnoDB
4.存儲(chǔ)層
數(shù)據(jù)存儲(chǔ)層,主要是將數(shù)據(jù)存儲(chǔ)在運(yùn)行于裸裝備的文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互.
二、查詢闡明
首先,mysql的查詢流程年夜致是:
mysql客戶端通過協(xié)議與mysql服務(wù)器建連接,發(fā)送查詢語句,先檢查查詢緩存,如果命中,直接返回結(jié)果,否則進(jìn)行語句解析,也就是說,在解析查詢之前,服務(wù)器會(huì)先拜訪查詢緩存(query cache)——它存儲(chǔ)SELECT語句以及相應(yīng)的查詢結(jié)果集.如果某個(gè)查詢結(jié)果已經(jīng)位于緩存中,服務(wù)器就不會(huì)再對(duì)查詢進(jìn)行解析、優(yōu)化、以及執(zhí)行.它僅僅將緩存中的結(jié)果返回給用戶即可,這將大大提高系統(tǒng)的性能.
有一系列預(yù)處理,好比檢查語句是否寫正確了,然后MySQL將用戶的查詢語句進(jìn)行解析,并創(chuàng)建一個(gè)內(nèi)部的數(shù)據(jù)結(jié)構(gòu)——分析樹,然后進(jìn)行各種優(yōu)化,例如重寫查詢、選擇讀取表的順序,以及使用哪個(gè)索引等.查詢優(yōu)化器不關(guān)心一個(gè)表所使用的存儲(chǔ)引擎,但是存儲(chǔ)引擎會(huì)影響服務(wù)器如何優(yōu)化查詢.優(yōu)化器通過存儲(chǔ)引擎獲取一些參數(shù)、某個(gè)操作的執(zhí)行代價(jià)、以及統(tǒng)計(jì)信息等.
然后,mysql默認(rèn)使用的BTREE索引,而且一個(gè)大致方向是:無論怎么折騰sql,至少在目前來說,mysql最多只用到表中的一個(gè)索引.
3、Mysql存儲(chǔ)引擎
1、查看敕令
#看你的mysql如今已提供什么存儲(chǔ)引擎:
mysql> show engines;
#看你的mysql當(dāng)前默許的存儲(chǔ)引擎:
mysql> show variables like '%storage_engine%';
二、MyISAM和InnoDB
四、SQL語句執(zhí)行次序
1、手寫
二、機(jī)讀
三、總結(jié)
歡迎參與《簡單MySQL教程一》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7080.html