儲存引擎是MySQL核心架構特色,決定了資料如何存儲、索引、鎖定與事務處理。本文系統梳理主流儲存引擎核心差異,提供場景化選型指南,並演示引擎查看、指定與變更的實戰操作。
MySQL 4.1.2+使用SHOW ENGINES:
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+----------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| InnoDB | YES | Supports transactions, row-level locking, foreign keys |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
+------------+---------+----------------------------------------------------+
舊版本用SHOW VARIABLES LIKE 'have_%'檢查。
my.cnf中default-storage-engine=InnoDBCREATE TABLE t (id INT) ENGINE=InnoDBALTER TABLE t ENGINE=MyISAM(警告:不支援相同索引/欄位類型時可能資料遺失)| 鎖定級別 | 代表引擎 | 特點 | 適用場景 |
|---|---|---|---|
| 表鎖 | MyISAM | 鎖定整表,寫入串行化 | 讀多寫少、唯讀分析 |
| 頁鎖(8KB) | BerkeleyDB | 鎖定資料頁 | 分散更新、少量並發寫入 |
| 行鎖 | InnoDB | 僅鎖操作行,最高並發 | 高並發OLTP、事務處理 |
myisampack)、全文索引(5.6+ InnoDB也支援)理解儲存引擎本質差異,依業務特性選型,是MySQL架構設計的核心竞争力所在。