Khi nào chuyển từ MyISAM sang InnoDB?


7

Chúng tôi có một máy chủ MySQL 5.0 chạy tất cả các bảng là MyISAM. Chúng tôi có hai nô lệ, trong tháng trước, chúng tôi đã nâng cấp lên MySQL 5.5. Bàn của họ vẫn là MyISAM.

Kế hoạch ban đầu của tôi là nâng cấp bản gốc 5.0 lên 5.5 và sau đó chuyển đổi thành InnoDB. Bây giờ tôi đang tự hỏi, nó sẽ có ý nghĩa hơn để bắt đầu trước khi nâng cấp? Tôi đã cảnh giác vì tôi nghe nói rằng InnoDB dưới 5.5 nhanh hơn nhiều so với InnoDB dưới 5.0. Đây có phải là vô căn cứ, và tôi nên bắt đầu bây giờ?

Câu trả lời:


9

Nếu bạn cần đồng thời các CẬP NHẬT và XÁC NHẬN nặng, bạn sẽ muốn InnoDB

Nếu bạn cần độ phân giải bế tắc, bạn sẽ muốn InnoDB

Nếu bạn muốn một công cụ lưu trữ lưu trữ cả dữ liệu và chỉ mục, bạn sẽ muốn InnoDB

Nếu bạn muốn truy cập nhiều CPU hiệu quả, bạn sẽ muốn InnoDB ( và điều chỉnh nó để làm như vậy )

Vui lòng tham khảo các bài viết trước đây của tôi trên InnoDB:

Bạn nói rằng bạn đã nghe nói rằng MySQL 5.5 nhanh hơn MySQL 5.0. Ra khỏi hộp, điều đó không đúng. BẠN PHẢI CHẠM MySQL 5.5 để có được HIỆU QUẢ TUYỆT VỜI !!! Đây là những bài viết trước đây của tôi về chủ đề đó:

Bạn đã đề cập MyISAM nhanh hơn InnoDB. Nếu có nhiều cột VARCHAR rộng trong MyISAM với ROW_FORMAT = Dynamic (Mặc định) mặc định, điều đó có thể làm giảm hiệu suất MyISAM. Nói một công cụ lưu trữ nhanh hơn công cụ lưu trữ phụ thuộc vào ứng dụng, tỷ lệ I / O đọc / ghi, điều chỉnh công cụ lưu trữ.

Xem bài viết của tôi xung quanh chủ đề này

Giải quyết vấn đề của bạn về việc chuyển đổi bây giờ hay sau này sang InnoDB:

Trong liên kết thứ năm tôi cung cấp ( Đầu tiên: nâng cấp phiên bản mysql hoặc chuyển đổi công cụ lưu trữ? ), Tôi khuyên bạn nên chuyển đổi trước. Tuy nhiên, trong trường hợp cụ thể của bạn, tôi sẽ khuyên bạn nên chuyển đổi sau. Lý do rất đơn giản: Bạn đang di chuyển dữ liệu đến một máy chủ khác. Bảng MyISAM rất dễ dàng để cổng. Việc thực hiện rsync hoặc scp của / var / lib / mysql sẽ hiệu quả hơn (nhanh hơn) khi chuyển đổi sang InnoDB vì dữ liệu sẽ hơi lớn (đôi khi đáng kể) khi tồn tại dưới dạng InnoDB.

Có hai điều bạn sẽ cần phải làm:

CẦN # 1

Nếu bạn rysnc / scp, /var/lib/mysqlbạn sẽ ghi đè / var / lib / mysql / mysql. Do đó, tôi đề nghị bạn di chuyển dữ liệu của mình như thế này:

CẦN # 2

Bạn cần một tập lệnh đơn giản để chuyển đổi MyISAM sang InnoDB. Vui lòng chạy như sau trên Máy chủ DB MySQL 5.5:

echo "SET SQL_LOG_BIN = 0;" > /root/ConvertMyISAMToInnoDB.sql
MYSQL_CONN="-u... -p..."
mysql ${MYSQL_CONN} -AN -e"SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=InnoDB;') InnoDBConversionSQL FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql','performance_schema') ORDER BY (data_length+index_length)" > /root/ConvertMyISAMToInnoDB.sql
less /root/ConvertMyISAMToInnoDB.sql

Khi bạn hài lòng với tập lệnh chuyển đổi, hãy đăng nhập vào mysql trên MySQL 5.5 và chạy

mysql> source /root/ConvertMyISAMToInnoDB.sql

Hãy thử một lần !!!


Cảm ơn bạn, mặc dù điều này không hoàn toàn trả lời câu hỏi của tôi. Tôi BIẾT tôi muốn InnoDB. Tôi đang hỏi liệu có hợp lý để chuyển đổi sang nó hay không trong khi vẫn ở 5.0, thay vì kế hoạch ban đầu của tôi là đợi đến 5.5, vì, vào ngày 5.0, có lẽ MyISAM nhanh hơn InnoDB.
Andrew
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.