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