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

MyISAM so với InnoDB trong MySQL

Cả hai đều là storage engine (engine lưu trữ). MySQL 8.0 mặc định dùng InnoDB.

Kiểm tra engine hiện tại

mysql> USE business;
mysql> SHOW TABLE STATUS;

Kết quả cho thấy cột Engine hầu hết là InnoDB.

Chuyển engine sang MyISAM

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';

Chạy các câu lệnh ALTER TABLE sinh ra để chuyển đổi.

So sánh nhanh

Đặc điểmInnoDB (mặc định)MyISAM (cũ)
Transaction (ACID)Hỗ trợ đầy đủKhông hỗ trợ
Khóa ngoại (FK)Hỗ trợKhông hỗ trợ
Khóa hàng (Row-level lock)CóChỉ khóa bảng (Table-level)
Crash recoveryTự động (redo/undo log)Cần repair thủ công
Fulltext searchTừ 5.6+Có sẵn từ lâu
Hiệu năng đọc thuần túyTốtNhanh hơn một chút (đơn luồng)
Dung lượng diskLớn hơn (metadata, log)Nhỏ hơn

Khuyến nghị: Mặc định dùng InnoDB cho hầu hết ứng dụng (transaction, FK, concurrency, crash-safe). Chỉ dùng MyISAM cho bảng read-only, fulltext search legacy, hoặc nhúng (embedded) cực nhỏ.