五大核心特性
| 特性 | 詳細說明 | 業務價值 |
| 關係型資料庫 (RDBMS) | 資料組織為表 (Table)、行 (Row)、欄 (Column);支援主鍵、外鍵、索引、視圖、觸發器、預存程序、事務 (ACID) | 資料一致性、結構化查詢、成熟生態 |
| 開源免費 (GPL / Commercial) | 社區版 GPL 免費使用、可檢視原始碼、可修改重發布;企業版提供額外功能 (加密、審計、備份、高可用) 與官方支援 | 零授權成本、避免廠商鎖定、社區創新快 |
| 高效能、高可靠、高安全 | 查詢快取 (舊版)、索引下推 (ICP)、MRR、自適應雜湊索引、插入緩衝、變更緩衝、雙寫緩衝、Redo/Undo Log、行鎖、MVCC、SSL/TLS、角色型存取控制 (RBAC)、資料遮罩、審計日誌 | 核心業務承載、合規安全、極致效能 |
| Client/Server 架構 + 多線程 | Server 端 (mysqld) 處理連線、解析、優化、執行、儲存;Client 端 (mysql, 應用驅動) 發送協議封包;單進程多線程模型,每連線一線程 (Thread-per-connection),線程池 (Thread Pool) 可選 | 高併發支撐、資源隔離、跨語言驅動 |
| 嵌入式支援 (libmysqld) | 將 MySQL Server 嵌入應用程式,無獨立進程、無網路通訊、零配置部署 | 桌面應用、IoT 邊緣裝置、測試框架、CI/CD 隔離環境 |
C/S 架構運作流程
Client (App) Server (mysqld)
│ │
├── TCP 連線 (三次握手) ──────► │
│ ├── 連線線程建立 (thread_cache_pool)
│ │
├── SSL/TLS 握手 (可選) ─────► │
│ │
├── 認證封包 (用戶/密碼/DB) ─► │
│ ├── 權限檢查 (mysql.user, mysql.db)
│ │
├─────────────────────────────► │
│ COM_QUERY (SQL) │
│ ├── 解析器 (Parser) → AST
│ ├── 優化器 (Optimizer) → Execution Plan
│ ├── 執行器 (Executor) → Storage Engine API
│ │ ├── InnoDB (行鎖、MVCC、Buffer Pool)
│ │ ├── MyISAM (表鎖、Key Cache)
│ │ └── 其他引擎
│ │
│ ◄────────────────────────────┤
│ Resultset / OK/ERR │
│ │
├── COM_QUIT ────────────────► │
│ ├── 線程歸還池 / 銷毀
多線程模型關鍵參數
| 參數 | 預設/範圍 | 調優方向 |
| max_connections | 151 / 1-100000 | 根據峰值併發 + 保留 10-20% 緩衝設定 |
| thread_cache_size | 256 / 0-16384 | 避免頻繁建立/銷毀線程開銷,設為 max_connections 10-20% |
| thread_stack | 256KB / 128KB- | 複雜預存程序/遞歸需增大 |
| thread_pool_size (Enterprise/Percona) | 16 / 1- | 線程池模式,高併發短查詢優於 One-thread-per-connection |
嵌入式 libmysqld 使用場景
-- 編譯應用時連結
gcc app.c -o app -lmysqld -lpthread -lrt -ldl -lm
-- 應用內部啟動
mysql_server_init(0, NULL, NULL);
MYSQL *conn = mysql_init(NULL);
mysql_options(conn, MYSQL_OPT_USE_EMBEDDED_CONNECTION, NULL);
mysql_real_connect(conn, NULL, "root", "", "test", 0, NULL, 0);
-- 後續同一般 MYSQL* API
mysql_server_end();
適用於:單機單使用者桌面應用、無網路環境邊緣計算、單元測試隔離 (每測試獨立實例)。不適用於:多用戶併發、遠端存取、高可用需求場景。
版本演進里程碑
3.23 (2001) : MyISAM、基本複寫
4.0 (2003) : 聯合查詢、UNION、子查詢 (部分)
4.1 (2004) : 預處理、協議 4.1、字元集支援、GIS
5.0 (2005) : 預存程序、觸發器、視圖、游標、XA 事務、InnoDB 內建
5.1 (2008) : 分區表、事件排程器、Row-based 複寫、Plugin API
5.5 (2010) : InnoDB 1.1 為預設、半同步複寫、Perf Schema
5.6 (2013) : GTID、Online DDL、ICP、MRR、Memcached API、Crash-safe Slave
5.7 (2015) : JSON、Sys Schema、Generated Column、Group Replication (Lab)、InnoDB Cluster 基礎
8.0 (2018) : CTE、窗口函數、角色、資料字典原子化、Instant DDL、Clone Plugin、InnoDB Cluster GA
MySQL 從簡易 ISAM 封裝演進為企業級分散式關係資料庫平台。理解架構演進脈絡,有助於技術選型、版本升級規劃、避坑舊版限制。