Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tăng tốc độ chuyển đổi từ MyISAM sang InnoDB

  • Đặt innodb_buffer_pool_size lớn (2GB trở lên)
  • đọc trước các tệp chỉ mục / dữ liệu myisam cũ của bạn bằng cách sử dụng các lệnh shell
  • tăng innodb_log_file_size (256 MB)
  • Thực hiện bảng thay đổi trong X chuỗi song song, trong đó X là số lõi CPU trên máy chủ của bạn
  • các chỉnh sửa nhỏ khác chỉ dành cho chuyển đổi (innodb_doublewrite =0, innodb_flush_log_at_trx_commit =0)

đặt innodb_buffer_pool_size càng cao càng tốt là cách điển hình để tăng tốc độ tạo bảng innodb - tập dữ liệu của bạn có vẻ như nó có thể vừa bên trong vùng đệm innodb 2GB, vì vậy bất kỳ máy chủ 64 bit tốt nào cũng nên cho phép điều đó. Alterna table type =innodb cũng nhanh hơn giải pháp dump + reimport và dễ dàng chạy song song.

Đồng thời đảm bảo rằng bạn đã tăng kích thước innodb_log_file_size từ mặc định là 5Mb lên 128 hoặc 256MB. Cẩn thận với điều đó và nó cần tắt sạch + xóa ib_logfile * cũ.

Nếu máy chủ của bạn có thứ gì đó như 8GB ram và bạn chạy phiên bản mysql 64 bit, tôi sẽ đề xuất một innodb_buffer_pool 2GB và bạn thậm chí có thể đọc trước các tệp MYD và MYI cũ trước khi đóng vì thời gian chết, để chúng sẽ ở trong Bộ nhớ đệm trang của hệ điều hành khi công việc thực sự bắt đầu.

Nếu bạn cũng thực hiện các chỉnh sửa nhỏ, xin lưu ý rằng bạn cần hoàn tác chúng sau khi chuyển đổi (một thời gian ngừng hoạt động nhỏ khác) để dữ liệu của bạn được an toàn, tôi nghi ngờ chúng có giá trị đối với một tập dữ liệu nhỏ như vậy.

Chúc các bạn thành công.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dữ liệu MySql bị cắt ngắn cho cột 'nâng cao' ở hàng 1

  2. Python SQL - Cách sử dụng Cơ sở dữ liệu SQLite, MySQL và PostgreSQL với Python

  3. mysql chọn trong danh sách với regexp / chuỗi con

  4. Việc sử dụng magic_quotes () có ảnh hưởng đến việc sử dụng mysql_real_escape_string () không

  5. Cách tốt nhất để kiểm tra xem một hàng có tồn tại trong bảng MySQL hay không