一、介紹
在MySQL的設計上,採用了分層架構的設計模式。有如下層次:
- 連接層
- 服務層
- 引擎層
- 存儲層
如同網絡的OSI七層模型,每個層次各負其責,各個相鄰層次直接相互調用提供服務。
二、各層詳細介紹
1、連接層
連接層主要與客戶端打交道,實現數據庫與客戶端的連接通信,完成連接處理、身份認證等等。
2、服務層
服務層提供了豐富的核心功能,如緩存(緩存select結果)、優化SQL語句(MySQL會對執行的sql語句進行優化)、過程、函數等等。
3、引擎層
mysql中有多種存儲引擎,負責數據的存儲方式和提取。存儲引擎有InnoDB、MyISAM、NDB、Merge等等,常用的兩種存儲引擎分別是InnoDB和MyISAM
4、存儲層
將數據存放在磁盤上,與硬件打交道的一層
三、存儲引擎InnoDB和MyISAM
1、兩者的區別
InnoDB | MyISAM | |
事務 | 支持事務 | 不支持事務 |
鎖粒度 | 行鎖 | 表鎖 |
併發度 | 高 | 低 |
索引方式 | 聚集索引 | 非聚集索引 |
外鍵 | 支持外鍵 | 不支持外鍵 |
2、選擇方式
- 如果需要事務支持,選擇InnoDB
- 讀多寫少的場景,選擇MyISAM