Một số bảng Magento không phải là InnoDB, có an toàn khi chuyển đổi tất cả các bảng sang InnoDB không?


16

Tôi đang sử dụng AWS RDS Đọc bản sao. Nó liên tục có vấn đề với các bảng công cụ Bộ nhớ của Magento. Để sao lưu và đọc bản sao RDS yêu thích InnoDB. Tôi có thể thay đổi tất cả các bảng thành InnoDB một cách an toàn không?

Ngoài ra, tôi nhận được cảnh báo sau từ AWS:

DB Instance magento-monin-prod-db chứa các bảng MyISAM chưa được di chuyển sang InnoDB. Các bảng này có thể tác động đến khả năng của bạn để thực hiện khôi phục tại thời điểm. Xem xét chuyển đổi các bảng này sang InnoDB. Vui lòng tham khảo http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appcill.MyQuery.CommonDBAT task.html # MyQuery.CommonDBAT task.Tables

Câu trả lời hợp lý

Vẫn quan tâm đến thông tin phản hồi. Tôi sẽ thêm câu này dưới dạng câu trả lời nếu tôi không tìm thấy bất kỳ vấn đề nào trong vòng 24 giờ tới. Các bước tôi thực hiện dưới đây có vẻ an toàn, cho đến nay. Mối quan tâm lớn nhất của tôi là các bảng Công cụ bộ nhớ của Magento (các bảng kết thúc bằng in_tmp) và tác động của nó đối với việc lập chỉ mục.

Đây là những gì tôi đã làm:

  1. SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento_db'

    • Đối với tôi, điều này trả về hầu hết các bảng chỉ mục tạm thời và các bảng mô-đun magento, vì vậy không có nhiều bảng cốt lõi quan trọng và một vài bảng đủ để tôi có thể dễ dàng thực hiện một bảng thay đổi khác nếu công cụ chạm vào quạt.
  2. Đối với mỗi bảng được trả về, tôi thực hiện: Alter table {table-name} ENGINE=InnoDB;

Tôi rất lo lắng khi thử điều này nếu không có bảng nào của bạn là InnoDB. Nhưng, như tôi đã nói trước đây, chỉ có một vài bảng cốt lõi trong trường hợp của tôi cần được sửa đổi.


Bạn đã chạy nó trong sản xuất lâu chưa? Nếu vậy, nó đang diễn ra như thế nào - nó có gây ra cho bạn bất kỳ vấn đề gì không? Suy nghĩ chủ yếu về các bảng chỉ mục * _tmp hiện đang là công cụ NHỚ.
Michael Parkin

1
Tôi không nhận thấy điều gì bất thường.
TylersSN

Tuyệt vời, cảm ơn vì đã xác nhận - chúng tôi sẽ thực hiện việc này và báo cáo lại.
Michael Parkin

@michael parkin hãy nhớ rằng chúng tôi đang sử dụng tìm kiếm Solr. Xem các câu trả lời khác nói về cách điều này có thể ảnh hưởng đến tìm kiếm.
TylersSN

1
Chúng tôi đã chạy ứng dụng này trong hầu hết các trang web sản xuất của chúng tôi (MariaDB 10.0), tất cả các bảng (bao gồm Bộ nhớ) chạy dưới dạng InnoDB - hoạt động rất tốt
Michael Parkin

Câu trả lời:


11

Bạn có thể thay đổi loại dữ liệu thành InnoDB, giả sử một trong những điều sau là đúng:

  1. Bạn đang sử dụng MySQL 5.6.4+ trong đó công cụ lưu trữ InnoDB hỗ trợ tìm kiếm toàn văn bản
  2. Bạn không sử dụng chức năng Tìm kiếm Magento mặc định dựa trên các khả năng tìm kiếm toàn văn bản MyISAM cơ bản. Chức năng đó thật rắc rối khi bắt đầu và bộ tính năng được cung cấp trong Tìm kiếm Magento mặc định để lại rất nhiều mong muốn vì vậy tôi khuyên bạn nên sử dụng Lucene hoặc Sphinx hoặc tìm kiếm được lưu trữ tốt nhất trong Algolia .

Cá nhân tôi khuyên bạn nên làm điều này với Công cụ sửa chữa DB Magento để giảm thiểu rủi ro và cũng kiểm tra xem có bất kỳ sự cố hoặc sự cố trôi cấu hình DB nào khác không. InnoDB là công cụ lý tưởng, mặc dù đó là những hạn chế toàn văn bản .


1
Chúng tôi đang sử dụng tìm kiếm năng lượng mặt trời. Vì vậy, chúng ta nên rõ ràng khi có liên quan đến tìm kiếm.
TylersSN

Tôi hoàn toàn không coi InnoDB là công cụ lý tưởng. Nó rất chậm so với MyISAM nếu bạn có nhiều truy vấn tìm kiếm. Tôi thường nghe rằng InnoDB thực hiện cập nhật nhanh hơn và hầu hết các truy vấn là cập nhật nên nhanh hơn. Tôi thấy hoàn toàn ngược lại. Đối với mỗi trang web tôi có, tôi có nhiều truy vấn tìm kiếm cập nhật / thêm truy vấn hơn. Tôi đã thử chuyển tất cả các bảng của mình sang InnoDB và thời gian tải trang đã chuyển từ cơ bản không chậm trễ (có thể 0,1 giây) sang 10 giây! Tôi đã chuyển đổi mọi thứ trở lại MyISAM vì đây là công cụ lý tưởng cho tốc độ (và nó hỗ trợ tìm kiếm toàn văn bản).
Tim Eckel

Tim, tôi "đồng ý", chủ yếu là vì tôi đã thấy hết lần này đến lần khác rằng @ ben-lessani-sonassi hoàn toàn được chứng minh là đúng và MySQL hiếm khi là một lực cản THỰC SỰ trên toàn bộ hệ thống KHÁC cần tối ưu hóa cho các phản hồi dưới 800ms ngay cả khi tải NHƯNG InnoDB là chìa khóa b / c Mage Core đang ghi vào DB ~ 10X để đăng nhập từng hành động "xem" của người dùng cộng với Solr là tốt nhất cho tìm kiếm hoàn hảo & đủ điều kiện :)
Bryan 'BJ' Hoffpauir Jr

1
Vậy, làm thế nào để chuyển đổi những gì được cho là InnoDB xử lý tất cả các mối quan hệ khóa ngoài đó và mức độ xóa hoàn toàn phụ thuộc vào xóa trên tầng từ các mối quan hệ fkey đó? Nói cách khác, làm thế nào để bạn xử lý rác sẽ còn sót lại bằng cách không có các mối quan hệ tại chỗ?
Phòng thí nghiệm Fiasco

@FiascoLabs Đã được một thời gian kể từ khi tôi kiểm tra luồng nhận xét này, trọng tâm của Q / A là chuyển đổi TỪ MyISAM sang InnoDB. Tôi đoán những người có các tính năng Quan hệ mà bạn đề cập có lẽ đã là InnoDB. MyISAM không hỗ trợ FK cũng như Giao dịch kể từ MySQL 5.7 mặc dù InnoDB không làm điều đó lệch khỏi tiêu chuẩn SQL một chút
Bryan 'BJ' Hoffpauir Jr.


2

Tôi vừa thay đổi công cụ mặc định của MySQL thành InnoDB và hầu hết các bảng Magento của tôi chỉ tự chuyển đổi một cách kỳ diệu thành InnoDB (một số vẫn là MyISAM và một số là Bộ nhớ).

Chỉ cần nghĩ rằng tôi sẽ chia sẻ điều này ...

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.