Table of Content
+-------------------------------------------------------+
1. TCP connection | |
2. authentication | +---------------------------------+ |
| | 1. connection / thread handling | |
client --------------------|--> +---------------------------------+ |
| ↓ |
| +---------------------------------+ |
| | 2. Parser ( translate ) | |
| +---------------------------------+ |
| ↓ |
| +--------------------------------------------+ |
| | 3. Execute (prepare -> optimize -> execute)| |
| +--------------------------------------------+ |
| | |
+----------------------|--------------------------------+
↓
+-----------------+
| storage Engine |
|(innerDB, MyIsAm)|
+-----------------+
Connection
- TCP 3 次握手
- 身份認證
- 成功後,連接器獲取權限,此用戶在這次連線都會是基於該權限
- 連接中就算被更改權限,在本次連線中並不會影響
長短連線
- 長連線優點
- 長連線缺點
- 長連接數太多,mysql 佔用的內存會太多而被系統 kill 導致重啟 mysql
- 解決方法:
- 定期斷開連接
- client 主動重置連接(版本5.7),釋放內存
解析 SQL (詞法分析,語法分析)
- 詞法分析: 建立SQL 語法樹
- 語法分析: 根據語法規則判斷SQL語法是否正確
執行 SQL (prepare, optimize, execute)
- Prepare (預處理)
- 檢查 table 和 col 是否存在
- 將 ‘select *' 擴展為 table 的所有 column
- Optimize (優化)
- Execute (執行)
- 根據執行計劃執行SQL 查詢語句,從存儲引擎讀取記錄,返回給客戶端