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

MySQL 儲存引擎類型全覽:ISAM、MyISAM、HEAP、InnoDB、BDB 特性對比

     編輯:MySQL 資料庫相關知識

引擎可用性

可用引擎取決於編譯時選項。預設支援:ISAM、MyISAM、HEAP。常見擴充:**InnoDB、BDB (BerkeleyDB)**。查看當前支援:SHOW ENGINES;

五大引擎特性速覽

引擎定位核心優勢核心劣勢適用場景
ISAM舊版基礎引擎讀極快、資源佔用低無事務、無容錯、崩潰資料不可恢復唯讀歷史歸檔、極少寫入
MyISAMMySQL 預設 (5.5 前)表鎖優化並發讀寫、壓縮索引、修復工具完善無事務、無外鍵、崩潰需修復Web 讀多寫少、日誌、報表、全文索引
HEAP (MEMORY)記憶體臨時表全記憶體、速度最快重啟資料消失、不支援 BLOB/TEXT、表鎖中間結果暫存、查找表、Session 快取
InnoDB事務引擎標準ACID、行鎖、外鍵、MVCC、快速崩潰恢復空間較大、寫入稍慢、全文索引較晚支援核心交易、高併發寫入、需資料安全
BDBBerkeleyDB 事務支援事務、頁鎖已停止維護、MySQL 5.1+ 移除歷史遷移專用,新專案勿用

MyISAM 進階特性補充

  • 資料檔支援 63 位長度(大檔案系統)。
  • 動態行格式自動合併碎片,刪除/更新/插入混合負載碎片少。
  • 單表最大 64 個索引,每索引最多 16 列,鍵長 ≤ 1000 bytes。
  • BLOB/TEXT 可建索引,NULL 允許在索引列(佔 0-1 byte)。
  • AUTO_INCREMENT 內部處理極快(≥10% 提升),值不重用。
  • 並發插入:資料檔中間無空洞時,讀取不阻塞尾部插入。
  • DATA DIRECTORY、INDEX DIRECTORY 可分離資料/索引目錄提升 I/O。
  • myisamchk --analyze 統計鍵值分布,myisampack 壓縮唯讀表。

InnoDB 核心架構亮點

  • 緩衝池同時快取資料與索引,innodb_buffer_pool_size 是調優第一參數。
  • 表空間可跨多檔案/原始分區,突破 2GB 單檔限制。
  • 行鎖佔用極小空間,無需升級表鎖。
  • 一致性非鎖定讀(MVCC),讀不阻塞寫、寫不阻塞讀。
  • 原生支援外鍵約束,CASCADE/SET NULL/RESTRICT。
  • 雙寫緩衝、插入緩衝、自適應雜湊索引等寫入優化機制。

快速查詢當前引擎


# 查看所有引擎支援狀態
SHOW ENGINES;

# 查看預設引擎
SHOW VARIABLES LIKE 'default_storage_engine';

# 查看特定表引擎
SHOW CREATE TABLE tbl_name;
-- 或
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='db' AND TABLE_NAME='tbl';

遷移建議

  • ISAM → MyISAM:mysql_convert_table_format 或 ALTER TABLE ... ENGINE=MyISAM。
  • MyISAM → InnoDB:大表用 pt-online-schema-change,小表直接 ALTER TABLE。
  • HEAP 僅用於會話級暫存,不可持久化。
  • BDB 已棄用,現有系統規劃遷移至 InnoDB。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved