Hướng dẫn chuyển storage engine của MySQL từ MyISAM sang InnoDB và ngược lại

Bài viết này sẽ hướng dẫn chuyển storage engine của MySQL từ MyISAM sang InnoDB và ngược lại.
1. Giới thiệu
  - MyISAM và InnoDB là các storage engine (cơ chế lưu trữ) của MySQL. Mỗi cơ chế sẽ lưu dữ liệu trên ổ cứng theo mỗi cách khác nhau và có ưu nhược điểm riêng. Một số tính năng của từng loại cơ chế:
  a. MyISAM:
                 + Chỉ có thể đọc table đồng thời mà không thể ghi đồng thời
                 + Tự sữa chữa và phục hồi dữ liệu tốt sau khi hệ thống bị crash.
                 + Hỗ trợ tìm kiếm full-text index.
                 + Tăng tốc độ ghi nhờ không ghi dữ liệu vào ổ cứng ngay mà ghi vào buffer trên RAM trước, sau một khoảng thời gian mới ghi vào ổ cứng.
                 + Hỗ trợ nén dữ liệu giúp tăng tốc độ đọc dữ liệu nhưng dữ liệu sau khi nén không thể cập nhật được.
  b. InnoDB:
                 + Có khả năng phục hồi, sửa chữa tốt.

                 + Là engine phức tạp nhất trong các engine của MySQL.
                 + Hỗ trợ MVCC (Multiversion Concurrency Control) do đó table có thể đọc và ghi đồng thời.
                 + Sử dụng clustered index do đó hiệu năng tìm kiếm theo primakey rất cao.
                 + Lưu dữ liệu trên 1 file (thuật ngữ gọi là tablespace).
                 + Hỗ trợ transactions.

2. Cách chuyển MyISAM sang InnoDB và ngược lại
  - Sử dụng cú pháp MySQL sau để chuyển từng table MyISAM sang InnoDB: ALTER TABLE table_name ENGINE = MyISAM;
  - Sử dụng cú pháp MySQL sau để chuyển từng table InnoDB sang InnoDB: ALTER TABLE table_name ENGINE = InnoDB;
  - Hướng dẫn chuyển tất cả table của một database từ MyISAM sang InnoDB:
     + Tạo file script: "vi script"
     + Thêm nội dung sau vào file script
         #!/bin/sh
         DBNAME="your-database"
         DBUSER="your-username"
         DBPWD="your-password"for t in $(mysql -u$DBUSER -p$DBPWD --batch --column-names=false-e "show tables" $DBNAME);do
         echo "Converting table $t"
         mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=InnoDB" $DBNAME;done
         Trong đó "your-database" là database cần chuyển, "your-username" là user name của được gán quyền cho database, "your-password" là password của user.

    + Thêm quyền thực thi cho file script: "chmod +x script
    + Chạy file script: ./script

  - Khách hàng có thể sử dụng script trên để chuyển InnoDB sang MyISAM với script trên bằng cách sửa dòng "mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=InnoDB" $DBNAME;done" thành "mysql -u$DBUSER -p$DBPWD -e "alter table $t engine=MyISAM" $DBNAME;done"

Was this answer helpful?

 Print this Article

Also Read

Hướng dẫn reset password root MySQL

Bài viết này sẽ hướng dẫn reset password root MySQL theo từng bước cụ thể. Các bước thực hiện như...

Quản lý cơ sở dữ liệu với phpMyAdmin

VinaHost cung cấp hệ thống quản lý cơ sở dữ liệu với phpMyAdmin, cho phép bạn dễ dàng truy cập và...

Làm thế nào để tôi kết nối đến CSDL MySQL từ xa?

"Làm thế nào để tôi kết nối đến CSDL MySQL từ xa?" - đó là một câu hỏi khá phổ biến của khách...

Các phương thức sao lưu cơ sở dữ liệu

Bài viết này sẽ giới thiệu cho bạn các phương thức sao lưu cơ sở dữ liệu.1. Giới thiệuBài viết...

Hướng dẫn nâng cấp MySQL

Bài viết sau sẽ hướng dẫn nâng cấp MySQL trên giao diện cPanel và thao tác nâng cấp bằng dòng...

Powered by WHMCompleteSolution