Để chuyển đổi engine, sử dụng lệnh ALTER TABLE.
Tạo bảng với engine MyISAM
mysql> create table DemoTable (
-> ClientId int NOT NULL AUTO_INCREMENT,
-> ClientName varchar(100),
-> ClientAge int,
-> ClientCountryName varchar(100),
-> isMarried boolean,
-> PRIMARY KEY(ClientId)
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.67 sec)
Chuyển đổi sang InnoDB
mysql> alter table DemoTable ENGINE=InnoDB; Query OK, 0 rows affected (1.97 sec) Records: 0 Duplicates: 0 Warnings: 0
Kiểm tra engine sau chuyển đổi
mysql> show create table DemoTable;
Kết quả - Engine đã chuyển thành InnoDB
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | DemoTable | CREATE TABLE `DemoTable` (`ClientId` int(11) NOT NULL AUTO_INCREMENT, `ClientName` varchar(100) ..., PRIMARY KEY (`ClientId`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Lưu ý quan trọng:
- InnoDB: Hỗ trợ transaction, khóa ngoại, khóa hàng (row-level locking), phục hồi sự cố tốt hơn. Mặc định từ MySQL 5.5+.
- MyISAM: Nhanh hơn cho đọc nhiều, ghi ít, hỗ trợ fulltext search (cũ), khóa cấp bảng (table-level locking).
- Chuyển đổi bảng lớn có thể tốn thời gian và khóa bảng trong quá trình.
- Dữ liệu được giữ nguyên, chỉ thay đổi engine lưu trữ.
Kiểm tra engine hiện tại: SHOW TABLE STATUS WHERE Name = 'ten_bang';