一. MYSQL 體系結(jié)構(gòu)和存儲引擎

注:主要講解MySql的InnoDB,MyISAM存儲引擎。

體系結(jié)構(gòu)


MySql體系結(jié)構(gòu)圖(根據(jù)教程自己手繪的簡單圖)
  • Client Connectors 層
    負責處理客戶端的連接請求,與客戶端創(chuàng)建連接。目前 MySQL 幾乎支持所有的連接類型,例如常見的 JDBC、Python、Go 等

  • MySQL Server 層
    Connection Pool: 負責處理和存儲數(shù)據(jù)庫與客戶端創(chuàng)建的連接,一個線程負責管理一個連接。Connection Pool 包括了用戶認證模塊,就是用戶登錄身份的認證和鑒權(quán)及安全管理,也就是用戶執(zhí)行操作權(quán)限校驗
    Service & utilities: 是管理服務&工具集,包括備份恢復、安全管理、集群管理服務和工具。
    SQL interface: 負責接收客戶端發(fā)送的各種 SQL 語句,比如 DML、DDL 和存儲過程等。
    Parser: 解析器會對 SQL 語句進行語法解析生成解析樹
    Optimizer: 查詢優(yōu)化器會根據(jù)解析樹生成執(zhí)行計劃,并選擇合適的索引,然后按照執(zhí)行計劃執(zhí)行 SQL 語言并與各個存儲引擎交互。
    Caches: 緩存包括各個存儲引擎的緩存部分,比如:InnoDB 存儲的 Buffer Pool、MyISAM 存儲引擎的 key buffer 等,Caches 中也會緩存一些權(quán)限,也包括一些 Session 級別的緩存。

  • 存儲引擎層
    存儲引擎包括 MyISAM、InnoDB,以及支持歸檔的 Archive 和內(nèi)存的 Memory 等。MySQL是插件式的存儲引擎,只要正確定義與 MySQL Server 交互的接口,任何引擎都可以訪問MySQL,這也是 MySQL 流行的原因之一

  • 存儲引擎底部是物理存儲層,是文件的物理存儲層,包括二進制日志、數(shù)據(jù)文件、錯誤日志、慢查詢?nèi)罩尽⑷罩?、redo/undo 日志等

用一條 SQL SELECT 語句的執(zhí)行軌跡來說明客戶端與 MySQL 的交互過程


來自網(wǎng)絡截圖


  • 在 MySQL 5.6 版本之前,默認的存儲引擎都是 MyISAM,但 5.6 版本以后默認的存儲引擎就是 InnoDB 了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容