【新炬網路名師大講堂】初識mysql的體系結構
Mysql的體系結構封裝著SQL介面、查詢解析器、查詢最佳化器和查詢執行引擎、快取/緩衝機制以及一個外掛式儲存引擎。
Connectors:
是一些用來與客戶端應用程式建立連線的資料庫介面。
connection pool:連線池
該層負責處理與使用者訪問有關的各種使用者登入、執行緒處理、記憶體和程式快取需求。
SQL Interface : SQL介面
SQL介面提供了從使用者接收命令並把結果返回給使用者的機制。
MySQL伺服器從網路接收連線請求併為每個連線建立一個執行緒。建立出一個執行緒之後,MySQL伺服器將開始解析SQL命令並把解析出來的各個部分儲存到一個內部資料結構裡去。
Parser: 解析器
當收到客戶端發出的查詢併為之建立一個新執行緒之後,SQL語句將被傳遞到解析器接受語法驗證(或因錯誤而被拒絕)。
MySQL的解析器讀入SQL語句並把該表示式與在原始碼裡定義的規則進行比較。
在解析器標識該正規表示式並把查詢語句分解成一系列基本元素後,它將把適當的命令型別分配給相應的執行緒結構並把控制權返回給命令處理器。解析器生成的查詢結構將被傳遞到查詢處理器,從那開始的後續工作將由查詢最佳化器負責。
查詢解析器只檢查SQL語句的語法正確定,它不檢查有關的表或屬性(欄位)是否存在,也不檢查語義錯誤(比如沒有寫出必要的GROUP BY子句)。這些事情由最佳化器檢查。
Optimizer: 查詢最佳化器
最佳化器使用了一種“選取-投影-聯結”策略來處理查詢,即先根據又換的限制條件進行選取(SELECT操作)以減少將要處理的元組的個數,再進行投影以減少被選取元組裡的屬性(欄位)的個數,最後根據聯結條件生成最終的查詢結果。
最佳化器規則:
@ 透過計算where子句裡的表示式來橫向排除多餘的資料。
@ 只保留在屬性(欄位)清單裡列出的,以及在最後執行聯結子句時還需要用到的屬性(欄位),其他資料全部排除。
@ 根據聯結條件生成最終的查詢結果
最佳化器裡的第一步: 是檢查有關表是否存在以及使用者是否有訪問許可權;如果發現錯誤,返回一條相應的出錯資訊並把控制權交還給執行緒管理器。一旦找到了正確的表,就開啟並應用適當的併發控制鎖。
最佳化器裡的第二步:在所有的維護和初始化任務全部完成後,最佳化器將使用內部查詢結構對查詢命令中的where條件進行處理(選取操作),其結果作為臨時表返回供後續步驟做進一步處理。
最佳化器裡的第三步:執行投影操作。 投影操作的執行的中間結果仍儲存在臨時表裡,且只儲存那些由SELECT語句中的列規範所執行的屬性。、
最佳化器裡的第四步: 檢查LEX結構裡有沒有用聯結類給出的JOIN條件;如果有,呼叫join::optimize()方法。
查詢的執行:
查詢的具體執行是由一組庫方法實現的,每種方法負責完成一種特定的查詢操作。
查詢快取:
查詢快取不僅可以快取查詢結構,還可以快取查詢結果本身.
如果某個查詢的結果就在快取裡,系統就可以直接取出那些資料返回給客戶端而跳過整個查詢最佳化和執行階段,
Cache和Buffer:快取和緩衝區
緩衝區和緩衝區子系統負責保證使用頻率最高的資料或結構能夠以最有效率的方式被訪問。
快取機制包含一些小快取:
@表快取
@記錄快取
@鍵快取
@許可權快取
@主機名快取
@其他快取機制
Engine :儲存引擎
外掛式儲存引擎的核心是檔案訪問層的一個抽象介面,任何人都可以利用這個API介面去建立新的檔案訪問機制。
外掛式儲存引擎最讓人感興趣的地方是允許你在一個給定的資料庫裡為每個表指定一個不同的儲存引擎,你甚至可以在建立一個表之後改變它的儲存引擎。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1376284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【新炬網路名師大講堂】總結和結論
- 【新炬網路名師大講堂】SOA套件介紹套件
- 【新炬網路名師大講堂】weblogic整合ejbWeb
- 【新炬網路名師大講堂】Oracle Database 12c 新特性總結OracleDatabase
- 【新炬網路名師大講堂】svn在linux下的使用Linux
- 【新炬網路名師大講堂】關於LOG FILE SYNC的解惑
- 【新炬網路名師大講堂】Oracle小知識- Oracle KILLED會話的釋放Oracle會話
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路一UX
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路二UX
- 【新炬網路名師大講堂】Oracle中的回收站(Recycle Bin)Oracle
- 【新炬網路名師大講堂】關於IMSI/MSISDN/IMEI的介紹
- 【新炬網路名師大講堂】MySQL複製與監控系列文章(1)——篇首MySql
- 【新炬網路名師大講堂】Data Guard–物理主備庫切換
- 【新炬網路名師大講堂】cursor: pin S wait on X模擬AI
- 【新炬網路名師大講堂】clone oracle 12c pluggable databasesOracleDatabase
- 【新炬網路名師大講堂】GoldenGate的ADD SCHEMATRANDATA命令研究Go
- 【新炬網路名師大講堂】AIX上的配置網路調優引數AI
- 【新炬網路名師大講堂】12c新特性:備份CDBs和PDBs
- 【新炬網路名師大講堂】12c新特性:使用RMAN連線CDB
- 【新炬網路名師大講堂】Oracle 11g rac 刪除節點Oracle
- 【新炬網路名師大講堂】j2ee與weblogic簡介Web
- 【新炬網路名師大講堂】oracle application server之核心技術opmnOracleAPPServer
- 【新炬網路名師大講堂】RAC環境下SYSDATE返回錯誤時間
- 【新炬網路名師大講堂】不同資料庫取前幾條記錄資料庫
- 【新炬網路名師大講堂】關於Oracle 12c Flex ASM特性的理解OracleFlexASM
- 【新炬網路名師大講堂】TimesTen記憶體碎片(高水位)回收步驟詳解記憶體
- 【新炬網路名師大講堂】軟體測試中常見問題與解決辦法
- 【新炬網路名師大講堂】CBO中”與NULL在cardinality計算上的差別Null
- 【新炬網路名師大講堂】WAS控制檯資料來源資訊無故丟失
- 【新炬網路名師大講堂】有限條件下怎樣做好恢復演練
- 【新炬網路名師大講堂】理解TimesTen錯誤日誌資訊”waiting for latch”AI
- 【新炬網路名師大講堂】DATABASE REPLAY加壓播放引數之SCALE_UP_MULTIPLIERDatabase
- 【新炬網路名師大講堂】把“庫”字脫掉,從資料庫管理員到資料架構師資料庫架構
- 【新炬網路名師大講堂】12c高可用新特性what-if command evaluation介紹
- 【新炬網路名師大講堂】記一次打PSU遇到的Copy failed的問題AI
- 【新炬網路名師大講堂】11gR203 RAC一個比較嚴重的bug
- 【新炬網路名師大講堂】O2O同步實施涉及的變更V1.0
- 【新炬網路名師大講堂】在AIX機器上使用xlc編譯c的動態庫AI編譯