mysql的架構介紹
mysql的分層思想和其它資料庫相比,mysql有點與眾不同,它的架構可以在多種不同場景中應用並發揮良好作用。主要體現在儲存引擎的架構上。
外掛程式式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需要選擇合適的儲存引擎。
mysql四層架構連線層
最上層是一些客戶端和連線服務。主要完成一些類似於連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接入的客戶端提供執行緒。同樣在該層上可以實現基於ssl的安全鏈結。伺服器也會為安全接入的每個客戶端驗證它所具有的操作許可權。服務層
第二層架構主要完成大多數的核心服務功能,如sql介面,快取的查詢,sql的分析和優化以及部分內建函式的執行。所有跨儲存引擎的功能也在這一層實現,如過程、函式等。
在該層,伺服器會解析查詢並建立相應的內部解析樹,並完成相應的優化(如確定查詢表的順序,是否利用索引等),最後生成相應的執行操作。
如果是select語句,伺服器還會查詢內部的快取。如果快取空間足夠大,這樣在解決大量讀操作的環境中能夠很好的提公升系統的效能。management serveices & utilities系統管理和控制工具sql inte***cesql介面。接收使用者的命令,並返回使用者查詢的結果(例如select from就是呼叫sql介面)
parser解析器。sql命令傳遞到解析器的時候會被解析器驗證和解析
optimizer查詢優化器。sql語句在查詢前會使用查詢優化器對查詢進行優化(比如有where條件時,優化器來決定先投影還是先過濾)
caches 和 buffers查詢快取。如果查詢快取有命中的查詢結果,查詢語句就可以直接去快取中取資料。這個快取機制是由一系列小快取組成的,比如表快取,記錄快取,key快取,許可權快取等。引擎層
儲存引擎真正的負責了mysql中資料的儲存和提取,伺服器通過api和儲存引擎進行通訊。不同的儲存引擎具有的功能不同,我們可以根據需要進行選取。(後面介紹myisam和innodb)
儲存引擎是基於表的,而不是資料庫儲存層
將資料儲存在執行於裸裝置的檔案系統之上,並完成與儲存引擎的互動
mysql 的查詢流程大致是:mysql客戶端通過協議與mysql伺服器建連線,傳送查詢語句。先檢查查詢快取,如果命中,直接返回結果;否則進行語句解析。
語法解析和預處理:首先mysql通過關鍵字將sql語句進行解析,並生成一顆對應的「解析樹」。mysql解析器使用mysql語法規則驗證和解析查詢;預處理器則根據一些mysql規則進一步檢查解析樹是否合法。
當解析樹被認為是合法的了,則由優化器將其轉化成執行計畫。一條查詢可以有很多種執行方式,最後都返回相同的結果,優化器的作用就是找到這其中最好的執行計畫。
然後,mysql預設使用的btree索引。
mysql 儲存引擎
myisam 引擎和 innodb 引擎的對比對比項myisaminnodb主外來鍵不支援支援
事務不支援支援
行表鎖表鎖,即使操作一條記錄也會鎖住整個表,不適合高併發的操作行鎖,操作時只鎖某一行,不對其它行有影響。適合高併發的操作
快取只快取索引,不快取真實資料不僅快取索引還快取真實資料,對記憶體要求較高,而且記憶體大小對效能有決定性的影響。
表空間小大
關注點效能事務
MySQL 特性分析 MyRocks簡介
rocksdb是facebook基於leveldb實現的,目前為facebook內部大量業務提供服務。經過facebook大量工作,將rocksdb作為mysql的乙個儲存引擎移植到mysql,稱之為myrocks。經過兩年的發展,myrocks已經比較成熟 rc階段 現已進入了facebook m...
MySQL基礎(一 簡介)
發展史 1996年,mysql 1.0 2008年 sun公司收購了mysql 2009年4月 oracle收購sun公司 資料庫 儲存有組織的資料的容器 通常是乙個檔案 表 某種特定型別資料的結構清單。資料庫中的表都有乙個名字,用來標識自己,此名字是唯一的。列 表中的乙個字段。所有表都是由乙個或多...
MySQL(一)簡介與入門
一 資料庫簡介 這個部落格詳細介紹 二 mysql的安裝 這個部落格詳細介紹 如果執行mysql出現問題 終端執行 mysql安裝常見問題 系統找不到指定的檔案 發生系統錯誤 1067 程序意外終止 該部落格詳細介紹 如果許可權不夠,win x鍵,管理員啟動。三 mysql介紹 1 安裝目錄 這是m...