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

Cách cập nhật storage engine của bảng MySQL

Thay đổi Storage Engine của bảng với ALTER TABLE

Sử dụng ALTER TABLE ten_bang ENGINE=ten_engine để chuyển đổi engine.

Tạo bảng với engine MyISAM

mysql> create table DemoTable ( 
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    StudentName varchar(20), 
    StudentAge int, 
    StudentCountryName varchar(20) 
) ENGINE=MyISAM, AUTO_INCREMENT=101; 
Query OK, 0 rows affected (0.18 sec)

Kiểm tra engine hiện tại

mysql> show create table DemoTable;
... ENGINE=MyISAM AUTO_INCREMENT=101 ...

Chuyển sang InnoDB

mysql> alter table DemoTable ENGINE=InnoDB; 
Query OK, 0 rows affected (1.21 sec) 
Records: 0  Duplicates: 0  Warnings: 0

Kiểm tra lại

mysql> show create table DemoTable;
... ENGINE=InnoDB AUTO_INCREMENT=101 ...

So sánh MyISAM vs InnoDB:

Lưu ý khi chuyển đổi:

  • Quá trình khóa bảng (table lock) - ảnh hưởng hiệu năng trên bảng lớn
  • Dung lượng disk tạm thời tăng gấp đôi trong quá trình chuyển
  • Foreign key có thể thất bại nếu dữ liệu vi phạm ràng buộc
  • MyISAM không hỗ trợ transaction → dữ liệu có thể không nhất quán nếu crash khi chuyển

Khuyến nghị: Luôn dùng InnoDB cho ứng dụng production hiện đại.

Đặc điểmMyISAMInnoDB
Transaction (ACID)KhôngCó
Foreign KeyKhôngCó
LockingTable-levelRow-level
Crash RecoveryKémTốt (Redo log)
Fulltext SearchCó (cũ)Có (5.6+)
Mặc định MySQL< 5.5≥ 5.5