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

MySQL 修改資料表儲存引擎為 InnoDB / MyISAM 完整教學

     編輯:MySQL 資料庫相關知識

MySQL 支援多種儲存引擎,最常用的是 InnoDB(支援交易、行級鎖、外鍵)與 MyISAM(支援全文索引、讀多寫少場景)。依據業務需求切換引擎非常簡單。

查看目前引擎

SHOW TABLE STATUS FROM `database_name` WHERE Name = 'table_name';
-- 或查看所有表
SHOW TABLE STATUS FROM `database_name`;

結果中的 Engine 欄位即為目前引擎。

修改單張表引擎

-- 改為 InnoDB
ALTER TABLE `table_name` ENGINE = InnoDB;

-- 改為 MyISAM
ALTER TABLE `table_name` ENGINE = MyISAM;

批次修改腳本(範例)

SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` ENGINE=InnoDB;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_db' AND ENGINE = 'MyISAM';

將輸出的 SQL 複製執行即可完成全庫遷移。

注意事項

  • ALTER TABLE ... ENGINE=... 會鎖表重建,大表操作會長時間阻塞寫入,建議使用 pt-online-schema-change 或在低峰期執行。
  • MyISAM 不支援交易與外鍵,遷移前確認應用不依賴這些特性。
  • InnoDB 表空間預設為共享(ibdata1),建議開啟 innodb_file_per_table=ON 使用獨立表空間(.ibd 檔案),便於管理與回收空間。

引擎選擇建議

場景推薦引擎
高併發寫入、需交易、外鍵InnoDB
純讀取、全文搜尋(MySQL 5.6+ InnoDB 也支援)MyISAM
日誌、暫存表、資料不重要可重建MyISAM / MEMORY
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved