極客時間MySQL實戰45講筆記 一 .基礎架構

1. Mysql的基礎架構

1.1. MySQL基礎架構示意圖

從上圖上能夠看出,mysql分爲Server層和存儲引擎兩部分mysql

Server包括鏈接器、查詢緩存、分析器、優化器、執行器等。以及全部的內置函數,還有存儲過程、觸發器視圖等。sql

存儲引擎負責數據的存儲和提早。其架構模式是插件式,支持InnoDB、MyISAM、Memory等多個存儲引擎。緩存

不一樣的存儲引擎公用一個server層。架構

1.2 server各個部分的做用

  1. 鏈接器函數

    負責與客戶端創建連接、獲取權限、位置和管理連接優化

    mysql -h$ip -P$port -u$user -p

    用戶成功鏈接以後,鏈接器會到權限表裏面查出該用戶所擁有的權限。以後該鏈接以內的權限判斷都會依賴已經督導的權限。即:*若是修改已經鏈接的用戶權限須要從新鏈接以後才能生效。插件

    若是鏈接以後,客戶端長時間沒有操做,鏈接器會自動斷開。這給時間是由參數wait_timeout控制的,默認時間爲8小時。3d

    mysql中長鏈接是指**鏈接成功以後,若是客戶端持續有請求,則一直使用統一給鏈接。短連接則是指每次執行完不多的幾回查詢就斷開鏈接,下次查詢再從新創建一個。code

    大量使用長鏈接,內存佔用過大的問題解決辦法:server

    • 按期斷開長鏈接、或者在執行一個佔用較大內存查詢以後,斷開鏈接
    • Mysql5.7 以後的版本,可使用mysql_reset_connection來從新初始化鏈接資源
  2. 查詢緩存

    mysql執行select以前,會先從查詢緩存中判斷是否執行過該sql

    只要對一個表的更新,該表上的全部查詢緩存都會被清空

    若是有必要,能夠經過顯示的方式使用查詢緩存

    select sql_cache * from T where id = 1;

    mysql8.0版將查詢緩存刪除了

  3. 分析器

    主要是對輸入的語句進行解析,並判斷是否知足mysql的語法要求

  4. 優化器

    優化器是在表中存在多個索引的時候,決定使用哪一個索引;或者一個語句有奪標關聯的時候,決定各個表的鏈接數據順序。

  5. 執行器

    判斷是否有權限對錶的操做,若是有則調用引擎接口,進行數據處理。

相關文章
相關標籤/搜索