ทั้งคู่เป็น Storage Engine ตารางใน MySQL 8.0.12 ใช้ InnoDB เป็นค่าเริ่มต้น
ดู Engine ของตารางทั้งหมด:
mysql> USE business; mysql> SHOW TABLE STATUS;
ผลลัพธ์แสดง Column: Name, Engine, Version, Row_format, Rows, Avg_row_length, Data_length, Index_length, Auto_increment, Create_time, Collation, ฯลฯ
ตัวอย่าง output แสดง Engine = InnoDB สำหรับทุกตาราง
เปลี่ยน Engine เป็น MyISAM
ใช้ ALTER TABLE ... ENGINE=MyISAM หรือสร้างคำสั่งแบบ Dynamic:
SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ' ENGINE=MyISAM;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'sample' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE';
ความแตกต่างสำคัญ (สรุป)
| คุณสมบัติ | InnoDB | MyISAM |
|---|---|---|
| Transactions (ACID) | รองรับ | ไม่รองรับ |
| Row-level Locking | รองรับ | Table-level locking เท่านั้น |
| Foreign Keys | รองรับ | ไม่รองรับ |
| Crash Recovery | ดี (Redo/Undo logs) | เสี่ยงข้อมูลเสีย |
| Full-text Search (เก่า) | รองรับ (5.6+) | รองรับ (native) |
| Performance (Read-heavy) | ดี | อาจเร็วกว่าเล็กน้อย |
แนวทางเลือก: ใช้ InnoDB สำหรับแอปพลิเคชันทั่วไปที่ต้องการ Transactions, FK, Concurrency ใช้ MyISAM เฉพาะกรณี Read-only, Full-text search แบบเก่า, หรือระบบ Embedded ที่เรียบง่าย