本文為「從零開始學 MySQL」系列第三篇,系統講解數據庫的創建與刪除、存儲引擎架構、三大主流引擎特性對比,幫助初學者建立完整的 MySQL 存儲層認知。
-- 查看現有數據庫
SHOW DATABASES;
-- 創建數據庫(指定字符集與校對規則)
CREATE DATABASE mydb
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
-- 刪除數據庫(謹慎!無確認提示,數據不可恢復)
DROP DATABASE mydb;
⚠️ 警告:DROP DATABASE 執行即生效,不會彈出確認框,且會連同所有表、視圖、觸發器、存儲過程一併刪除。生產環境務必先備份、再雙重確認。
-- 查看支持的引擎
SHOW ENGINES;
-- 重點關注 Support 列:YES/DEFAULT/NO
-- DEFAULT 表示當前默認引擎
存儲引擎是 MySQL 底層組件,負責數據的存儲、索引、鎖、事務、恢復等核心能力。MySQL 採用插件式架構,上層 SQL 層與下層存儲引擎解耦,可按表級別指定引擎。
| 特性 | InnoDB | MyISAM | MEMORY (HEAP) |
|---|---|---|---|
| 事務支持 | ✅ ACID 完整支持 | ❌ 不支持 | ❌ 不支持 |
| 鎖粒度 | 行鎖 | 表鎖 | 表鎖 |
| 外鍵約束 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 |
| 崩潰恢復 | ✅ Redo/Undo Log | ❌ 易損壞需修復 | ❌ 重啟數據全失 |
| 全文索引 | 5.6+ 支持 | ✅ 早期優勢 | ❌ |
| 數據存儲 | 表空間 + 索引組織表 | .MYD/.MYI 分離文件 | 純內存,重啟丟失 |
| 最大索引數 | 64/表 | 64/表(可重編譯擴展) | 32/表 |
| 最大列/索引 | 16 | 16 | 16 |
| 適用場景 | 核心業務、高併發、事務型 | 只讀/讀多寫少、全文檢索 | 臨時表、查詢緩存、中間結果 |
-- 建表時指定
CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB;
-- 既有表轉換(會重建表,鎖表時間與數據量成正比)
ALTER TABLE t1 ENGINE=InnoDB;
-- 查看表引擎
SHOW TABLE STATUS LIKE 't1'\G
-- Engine: InnoDB
理解存儲引擎差異,是 Schema 設計、性能調優、故障排查的基石。建議新項目統一 InnoDB,特殊場景再評估 MyISAM/MEMORY/Archive/RocksDB 等專用引擎。