ภาพรวม
InnoDB เป็น Storage Engine เริ่มต้น (Default) ตั้งแต่ MySQL 5.5 เป็นต้นมา และใน MySQL 8.0 ก็ยังคงเป็น Default อยู่แล้ว โดยทั่วไปไม่จำเป็นต้องติดตั้งเพิ่มเติม แต่สามารถตรวจสอบและกำหนดค่าได้ผ่านไฟล์ my.ini (Windows) หรือ my.cnf (Linux/macOS)
1. ตรวจสอบสถานะ InnoDB
SHOW ENGINES;
-- หรือ
SHOW VARIABLES LIKE 'have_innodb';
หากแสดง DEFAULT หรือ YES แสดงว่า InnoDB พร้อมใช้งาน
2. ตั้งค่าผ่านไฟล์ my.ini / my.cnf
เปิดไฟล์設定 แล้วตรวจสอบหรือเพิ่มในส่วน [mysqld]:
[mysqld]
default-storage-engine=InnoDB
innodb_buffer_pool_size=1G -- ปรับตาม RAM (แนะนำ 70-80% ของ RAM)
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1
innodb_file_per_table=1
หมายเหตุ: หลังแก้ไฟล์ config ต้อง restart MySQL service
3. ระบุ Engine ตอนสร้างตาราง
CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName VARCHAR(100),
StudentLastName VARCHAR(100),
StudentAge INT
) ENGINE=InnoDB;
4. ตรวจสอบ Engine ของตาราง
SELECT table_name, engine
FROM information_schema.tables
WHERE table_name = 'DemoTable';
ผลลัพธ์
+------------+--------+
| TABLE_NAME | ENGINE |
+------------+--------+
| DemoTable | InnoDB |
+------------+--------+
5. แปลงตารางเดิมเป็น InnoDB
ALTER TABLE existing_table ENGINE=InnoDB;
คุณสมบัติหลักของ InnoDB
- ACID Compliant - รองรับ Transaction (Commit/Rollback)
- Row-level Locking - ล็อกระดับแถว ประสิทธิภาพดีกว่า Table-lock
- Foreign Key - รองรับ Constraint ความสัมพันธ์ระหว่างตาราง
- Crash Recovery - กู้คืนข้อมูลอัตโนมัติหลัง Crash
- MVCC - Multi-Version Concurrency Control
สรุป
ใน MySQL เวอร์ชันใหม่ (5.5+) InnoDB เปิดอยู่แล้วโดยค่าเริ่มต้น ตรวจสอบด้วย SHOW ENGINES และระบุ ENGINE=InnoDB ตอนสร้างตารางเพื่อความแน่ใจ