MySQL 核心特性與架構限制全覽
本文針對 MySQL 早期版本(4.x/5.0 時代)的核心能力與已知限制進行系統梳理,部分特性在 5.5/5.7/8.0 已大幅改進,請結合版本閱讀。
1. 安裝與資源佔用
- 支援 RPM/DEB/TGZ 多種封裝;
mysqld 守護進程極輕量:~500KB 私有記憶體 + 4MB 共享記憶體(Pentium 133/RedHat 5.1 實測)。
- 僅在執行真實查詢時佔用 CPU,適合小型資料庫共存部署。
rc3.d 自動生成啟動腳本,多用戶模式自動拉起。
2. 數據類型體系
- 標準整數、浮點、字串、日期時間、
BLOB/TEXT 變長類型。
- 整數支援
AUTO_INCREMENT;日期時間格式豐富。
- 獨有類型:
ENUM(單選枚舉,1 字節存儲)、SET(多選枚舉,位圖存儲)。善用 SET + FIND_IN_SET 可減少關聯表 Join,提升效能。
3. SQL 標準相容性
| 特性 | 支援情況 | 備註 |
| 大小寫不敏感搜尋 | ✅ 原生支援 | 非標準擴展 |
| 用戶自定義函數 (UDF) | ✅ 支援 | 編譯為 .so,LOAD FUNCTION 載入 |
| 子查詢 | ❌ 早期不支援 | 5.1+ 已支援;可用 JOIN 重寫 |
| 視圖 | ❌ 早期不支援 | 5.1+ 已支援 |
| 存儲過程 | ❌ 早期無 | 5.0+ 引入 |
| 觸發器 | ❌ 早期無 | 5.0+ 引入 |
4. 參考完整性 (RI) 缺口與變通
- 缺乏標準
FOREIGN KEY、CHECK CONSTRAINT、CASCADE DELETE(早期 MyISAM)。
- 解析器容忍上述語法但不執行,僅為遷移相容。
- 變通:
UNIQUE INDEX 模擬唯一性;應用層維護關聯一致性;InnoDB 5.5+ 完整支援 FK。
5. 安全體系
- 權限體系複雜非標準:
GRANT/REVOKE 較晚支援;修改權限需 FLUSH PRIVILEGES 或重啟生效。
- 學習曲線陡峭,文檔詳盡但需精讀。
版本演進提示
MySQL 5.5+:InnoDB 成預設引擎、完整 FK/事務/行鎖。
MySQL 5.7:JSON、GIS、Generated Columns、CCTE。
MySQL 8.0:窗口函數、CTE、角色、utf8mb4 預設、即時 DDL。
早期版本限制多為「功能缺失」,現代版本已補齊主流企業級特性。選型時以業務需求對齊版本能力矩陣。
- 上一篇文章: ⚠️ 安全警示:MySQL 注入生成 Webshell 後門實戰原理與防範
- 下一篇文章: MySQL 事件調度器實戰:定時任務創建、管理與複雜業務邏輯封裝
Copyright ©
程式碼之家 All Rights Reserved