顾美玲勾引管家|日韩黄色成人|国产精品theporn动漫|欧美日日日|国产精品探花在线

專業只做數據庫實訓和認證的品牌機構

微信公眾號新浪微博
免費咨詢電話:400-0909-964
當前位置: 網站首頁 > MySQL培訓 > MySQL課程 > MySQL培訓課程:MySQL架構

MySQL培訓課程:MySQL架構

文章來源: 更新時間:2016/6/20 16:13:05

在線老師點擊咨詢:

最新學訊:近期OCP認證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯系在線老師,甲骨文官方認證,報名從速!

我要咨詢

1.MySQL整體邏輯架構

我們先下圖看看MySQL整體邏輯架構(MySQL’s Logical Architecture)

第一層,即最上一層,所包含的服務并不是MySQL所獨有的技術。它們都是服務于C/S程序或者是這些程序所需要的 :連接處理,身份驗證,安全性等等。

第二層值得關注。這是MySQL的核心部分。通常叫做 SQL Layer。在 MySQL據庫系統處理底層數據之前的所有工作都是在這一層完成的,包括權限判斷, sql解析,行計劃優化, query cache 的處理以及所有內置的函數(如日期,時間,數學運算,加密)等等。各個存儲引擎提供的功能都集中在這一層,如存儲過程,觸發器,視 圖等。

第三層包括了存儲引擎。通常叫做StorEngine Layer ,也就是底層數據存取操作實現部分,由多種存儲引擎共同組成。它們負責存儲和獲取所有存儲在MySQL中的數據。就像Linux眾多的文件系統 一樣。每個存儲引擎都有自己的優點和缺陷。服務器是通過存儲引擎API來與它們交互的。這個接口隱藏 了各個存儲引擎不同的地方。對于查詢層盡可能的透明。這個API包含了很多底層的操作。如開始一個事 物,或者取出有特定主鍵的行。存儲引擎不能解析SQL,互相之間也不能通信。僅僅是簡單的響應服務器 的請求。

連接管理和安全

在服務器內部,每個client連接都有自己的線程。這個連接的查詢都在一個單獨的線程中執行。這些線程輪流運行在某一個CPU內核(多核CPU)或者CPU中。服務器緩存了線程,因此不需要為每個client連接單獨創建和銷毀線程 。

當clients(也就是應用程序)連接到了MySQL服務器。服務器需要對它進行認證(Authenticate)。認證是基于用戶名,主機,以及密碼。對于使用了SSL(安全套接字層)的連接,還使用了X.509證書。clients一連接上,服務器就驗證它的權限 (如是否允許客戶端可以查詢world數據庫下的Country表的數據)。

優化和執行

MySQL會解析查詢,并創建了一個內部數據結構(解析樹)。然后對其進行各種優化。這些優化包括了,查詢語句的重寫,讀表的順序,索引的選擇等等。用戶可以通過查詢語句的關鍵詞傳遞給優化器以便提示使用哪種優化方式,這樣即影響了優化器的優化方式。另外,用戶也可以請求服務器給出優化過程的各種說明,以獲知服務器的優化策略,為用戶提供了參數基準,以便用戶可以重寫查詢,架構和修改相關服務器配置,便于mysql更高效的運行。

優化器并是不關心表使用了哪種存儲引擎,但是存儲引擎對服務器優化查詢的方式是有影響的。優化器需要知道存儲引擎的一些特性:具體操作的性能和開銷方面的信息,以及表內數據的統計信息。例如,存儲引擎支持哪些索引類型,這對于查詢是非常有用的。

在解析查詢之前,要查詢緩存,這個緩存只能保存查詢信息以及結果數據。如果請求一個查詢在緩存 中存在,就不需要解析,優化和執行查詢了。直接返回緩存中所存放的這個查詢的結果。

2.MySQL邏輯模塊組成

雖然從上圖1看起來 MySQL 架構非常的簡單,就是簡單的兩部分而已,但實際上每一層 中都含有各自的很多小模塊,尤其是第二層 SQL Layer ,結構相當復雜的。下面我們就分別 針對 SQL Layer 和 Storage Engine Layer 做一個簡單的分析。我們看下圖體系結構:

1.Connectors

指的是不同語言中與SQL的交互

2 Management Serveices & Utilities:

系統管理和控制工具

3 Connection Pool: 連接池

管理緩沖用戶連接,線程處理等需要緩存的需求。

負責監聽對 MySQL Server 的各種請求,接收連接請求,轉發所有連接請求到線程管理模塊。每一個連接上 MySQL Server 的客戶端請求都會被分配(或創建)一個連接線程為其單獨服務。而連接線程的主要工作就是負責 MySQL Server 與客戶端的通信,

接受客戶端的命令請求,傳遞 Server 端的結果信息等。線程管理模塊則負責管理維護這些連接線程。包括線程的創建,線程的 cache 等。

4 SQL Interface: SQL接口。

接受用戶的SQL命令,并且返回用戶需要查詢的結果。比如select from就是調用SQL Interface

5 Parser: 解析器。

SQL命令傳遞到解析器的時候會被解析器驗證和解析。解析器是由Lex和YACC實現的,是一個很長的腳本。

在 MySQL中我們習慣將所有 Client 端發送給 Server 端的命令都稱為 query ,在 MySQL Server 里面,連接線程接收到客戶端的一個 Query 后,會直接將該 query 傳遞給專門負責將各種 Query 進行分類然后轉發給各個對應的處理模塊。

主要功能:

a . 將SQL語句進行語義和語法的分析,分解成數據結構,然后按照不同的操作類型進行分類,然后做出針對性的轉發到后續步驟,以后SQL語句的傳遞和處理就是基于這個結構的。

b. 如果在分解構成中遇到錯誤,那么就說明這個sql語句是不合理的

6 Optimizer: 查詢優化器。

SQL語句在查詢之前會使用查詢優化器對查詢進行優化。就是優化客戶端請求的 query(sql語句) ,根據客戶端請求的 query 語句,和數據庫中的一些統計信息,在一系列算法的基礎上進行分析,得出一個最優的策略,告訴后面的程序如何取得這個 query 語句的結果

他使用的是“選取-投影-聯接”策略進行查詢。

用一個例子就可以理解: select uid,name from user where gender = 1;

這個select 查詢先根據where 語句進行選取,而不是先將表全部查詢出來以后再進行gender過濾

這個select查詢先根據uid和name進行屬性投影,而不是將屬性全部取出以后再進行過濾

將這兩個查詢條件聯接起來生成最終查詢結果

7 Cache和Buffer: 查詢緩存。

他的主要功能是將客戶端提交 給MySQL 的 Select 類 query 請求的返回結果集 cache 到內存中,與該 query 的一個 hash 值 做

一個對應。該 Query 所取數據的基表發生任何數據的變化之后, MySQL 會自動使該 query 的Cache 失效。在讀寫比例非常高的應用系統中, Query Cache 對性能的提高是非常顯著的。當然它對內存的消耗也是非常大的。

如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取數據。這個緩存機制是由一系列小緩存組成的。比如表緩存,記錄緩存,key緩存,權限緩存等

8 、存儲引擎接口

存儲引擎接口模塊可以說是 MySQL 數據庫中最有特色的一點了。目前各種數據庫產品中,基本上只有 MySQL 可以實現其底層數據存儲引擎的插件式管理。這個模塊實際上只是 一個抽象類,但正是因為它成功地將各種數據處理高度抽象化,才成就了今天 MySQL 可插拔存儲引擎的特色。

從圖2還可以看出,MySQL區別于其他數據庫的最重要的特點就是其插件式的表存儲引擎。MySQL插件式的存儲引擎架構提供了一系列標準的管理和服務支持,這些標準與存儲引擎本身無關,可能是每個數據庫系統本身都必需的,如SQL分析器和優化器等,而存儲引擎是底層物理結構的實現,每個存儲引擎開發者都可以按照自己的意愿來進行開發。

注意:存儲引擎是基于表的,而不是數據庫。

本文地址:http://www.mudan321.com/mysql/kecheng/12266003514.html 轉載請注明!


PostgreSQL入門到精通 100+ 個學習資料

Oracle培訓機構

金牌講師<>

冉乃綱-老師CUUG金牌講師
冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細了解老師]

免費咨詢上課流程 客服在線中

陳衛星-老師CUUG金牌講師
陳老師 CUUG金牌講師 精通Oracle管理、備份恢復、性能優化 11年Ora...[詳細了解老師]

免費咨詢上課流程 客服在線中

選學校如何選擇適合自己的學校

CUUG -CHINA UNIX USER GROUP,是國際UNIX組織UNIFORUM的中國代表,是國內悠久的專業UNIX培訓機構,被譽為中國UNIX 的搖籃。多年來,以提高教學質量為本,強調素質教育,積極引進、消化國外的新技術,有效的結合中國....[詳情]

一站式服務(從入學到就業一幫到底)

入學

學習

就業

實操

食宿
地址:北京市海淀區田村山南路35號院17號樓
課程咨詢: 400-0909-964
企業服務:137 1818 8639(陳經理)
部分信息來源于網絡,如有錯誤請聯系指正!
版權所有@北京神腦資訊技術有限公司 (CUUG,中國UNIX用戶協會) Copyright 2016 ALL Rights Reserved 京ICP備11008061號-1