Có. MySQL cho phép các bảng trong cùng một database sử dụng storage engine khác nhau (InnoDB, MyISAM, Memory, v.v.). Đây là cách làm chuẩn và được khuyến nghị.
Ví dụ minh họa
1. Tạo database
mysql> CREATE DATABASE CaHaiInnoDBvaMyISAM; mysql> USE CaHaiInnoDBvaMyISAM;
2. Tạo bảng InnoDB
mysql> CREATE TABLE SinhVien (
-> SinhVienId INT,
-> TenSinhVien VARCHAR(20)
-> ) ENGINE=InnoDB;
3. Tạo bảng MyISAM
mysql> CREATE TABLE NhanVien (
-> NhanVienId INT,
-> TenNhanVien VARCHAR(30)
-> ) ENGINE=MyISAM;
4. Kiểm tra engine của từng bảng
mysql> SELECT ENGINE FROM information_schema.tables
-> WHERE table_name = 'SinhVien' AND table_schema = 'CaHaiInnoDBvaMyISAM';
+--------+ | ENGINE | +--------+ | InnoDB | +--------+
mysql> SELECT ENGINE FROM information_schema.tables
-> WHERE table_name = 'NhanVien' AND table_schema = 'CaHaiInnoDBvaMyISAM';
+--------+ | ENGINE | +--------+ | MyISAM | +--------+
Khi nào dùng engine nào?
| Đặc điểm | InnoDB (mặc định từ 5.5+) | MyISAM |
|---|---|---|
| Transaction (ACID) | ✅ Hỗ trợ | ❌ Không |
| Foreign Key | ✅ Hỗ trợ | ❌ Không |
| Row-level locking | ✅ Có | ❌ Table-level |
| Full-text search | ✅ (5.6+) | ✅ (cũ, nhanh hơn) |
| Phục hồi sự cố | ✅ Tốt (redo log) | ❌ Dễ hỏng dữ liệu |
| Phù hợp cho | OLTP, ứng dụng quan trọng | Read-heavy, analytics, log |
Lời khuyên: Mặc định dùng InnoDB. Chỉ dùng MyISAM cho bảng chỉ đọc, log, hoặc full-text search cũ.