首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 存儲引擎差異詳解與啟用方法指南

     編輯:MySQL 資料庫相關知識

什麼是存儲引擎?

存儲引擎決定資料如何儲存、索引、鎖定、支援何種功能。MySQL 可在伺服器/資料庫/表三層級指定引擎,提供極大彈性。

一、查看可用引擎

MySQL 4.1.2+

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------+
| Engine     | Support | Comment                                            |
+------------+---------+----------------------------------------------------+
| MyISAM     | DEFAULT | 預設引擎,高效能非事務                             |
| InnoDB     | YES     | 事務、行級鎖、外鍵                                 |
| MEMORY     | YES     | 記憶體表,適合暫存                                 |
| MERGE      | YES     | MyISAM 表集合                                      |
| ARCHIVE    | NO      | 歸檔引擎,僅支援插入/查詢                          |
| CSV        | NO      | CSV 格式儲存                                       |
| ...        | ...     | ...                                                |
+------------+---------+----------------------------------------------------+

舊版本

mysql> SHOW VARIABLES LIKE 'have_%';
+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| have_innodb      | DISABLED |
| have_bdb         | YES      |
| have_isam        | YES      |
| ...              | ...      |
+------------------+----------+

二、主流引擎特性對比

引擎事務鎖粒度外鍵全文索引適用場景
InnoDB✅行級✅5.6+ ✅核心業務、高並發寫入
MyISAM❌表級❌✅讀多寫少、全文搜尋、日誌
MEMORY❌表級❌❌暫存表、快速查找
ARCHIVE❌行級❌❌海量歸檔、僅寫入查詢
CSV❌表級❌❌外部工具交換資料
BLACKHOLE❌無❌❌複製過濾、效能測試

三、指定引擎的三種方式

1. 建表時指定

CREATE TABLE t1 (id INT) ENGINE=InnoDB;

2. 修改現有表

ALTER TABLE t1 ENGINE=InnoDB;

3. 設定預設引擎

[mysqld]
default-storage-engine=InnoDB

四、啟用/停用引擎

動態載入(支援插件式引擎)

INSTALL PLUGIN innodb SONAME 'ha_innodb.so';
UNINSTALL PLUGIN innodb;

編譯時指定

./configure --with-plugins=innodb,myisam,archive --without-plugin=blackhole

配置檔停用

[mysqld]
skip-innodb
# 或
innodb=OFF

五、選型決策樹

  1. 需事務/外鍵/高並發寫入 → InnoDB
  2. 純讀/全文搜尋/日誌/報表 → MyISAM
  3. 暫存中間結果/極速查找 → MEMORY
  4. 海量唯寫歸檔 → ARCHIVE
  5. 需與外部 CSV 互通 → CSV
  6. 混合負載 → 單實例混用不同引擎(表級指定)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved