Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: Có thể dùng InnoDB và MyISAM trong cùng một database?

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ểmInnoDB (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 choOLTP, ứng dụng quan trọngRead-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ũ.