Cơ sở dữ liệu Wordpress chậm - tôi có nên chuyển sang InnoDB không?


12

Tôi có một trang web WordPress với hơn 10 nghìn bài đăng và mọi thứ bắt đầu trở nên rất chậm bất cứ khi nào tôi thêm và chỉnh sửa bài đăng. Các trang tải tốt và nhanh cho người dùng, cùng với danh sách bài đăng của quản trị viên, nhưng đó là khi việc ghi hoặc cập nhật xảy ra, máy chủ chuyển sang CPU 100% và mất nhiều thời gian (đôi khi lâu hơn thời gian 60 giây của PHP).

Tôi nghĩ rằng điều này có thể xảy ra với việc khóa cấp độ bảng của MyISAM và tôi đang nghĩ đến việc chuyển đổi nó sang InnoDB. Ý nghĩa của việc làm này là gì?

Một số thống kê:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

Tôi biết có rất nhiều tối ưu hóa khác mà tôi có thể thực hiện, nhưng cảm giác của tôi là điều này có thể có tác động lớn nhất.

Cảm ơn

Chỉnh sửa : Tôi đã tìm thấy một trong những vấn đề lớn gây ra sự chậm chạp, đó là YARPP (Tuy nhiên, một bài viết liên quan khác) đang tái tạo "sự liên quan" mỗi lần và điều này dường như là do các thẻ 2k + chúng tôi có. Tôi đã tắt tùy chọn "xem xét thẻ" và nó đã tăng tốc đáng kể.

Ngoài ra, các plugin khác tái tạo mọi thứ có thể gây ra các loại vấn đề này, chẳng hạn như một số plugin sơ đồ trang web XML.

Vì vậy, vấn đề trước mắt của tôi đã được giải quyết, mặc dù tôi vẫn rất thích nghe câu trả lời hay cho InnoDB vs MyISAM cho Wordpress!

Câu trả lời:


11

Tôi thực sự sẽ chuyển sang InnoDB. Khóa bảng / khóa hàng đã được thảo luận bởi nhiều người. Tôi sẽ luôn chọn InnoDB. Tuy nhiên, có một lý do sâu sắc khác để chọn InnoDB ... CÁCH MẠNG .

Mặc dù hầu hết mọi người đều tự hào rằng MyISAM nhanh hơn để đọc, nhưng hầu hết mọi người đều quên rằng nhiều bộ đệm cho MyISAM, được gọi là bộ đệm chính (được đặt bởi key_buffer_size), chỉ lưu trữ các trang chỉ mục từ các tệp .MYI. Nó không bao giờ lưu trữ các trang dữ liệu. Nó có tối đa chính thức 4GB trong Hệ thống 32 bit. 8GB là tối đa tốt nhất cho 64-bit.

Nhóm đệm InnoDB lưu trữ dữ liệu và các trang chỉ mục. Tùy thuộc vào máy chủ mà bạn có, bạn có thể lưu trữ tối đa toàn bộ dữ liệu trong RAM. Bạn có thể điều chỉnh InnoDB cho tối đa 80% RAM và 10% cho DB Conenctions và để lại 10% cho HĐH. Điều này đúng ngay cả đối với các hệ điều hành khác nhau .

Tôi đã khuyến nghị những điều này cho khách hàng của Drupal với thành công tuyệt vời. Nó cũng áp dụng cho Wordpress . Tôi đã cung cấp hỗ trợ DB cho khách hàng với WordPress. Cải tiến tương tự.

Bạn luôn có thể định cấu hình bộ nhớ cho InnoDB hiệu quả hơn để bạn có thể MyISAM nhiều hơn. Luôn luôn có một cách để tweek InnoDB phù hợp với nhu cầu hiệu suất của bạn . Khi dữ liệu của bạn phát triển, cuối cùng nó sẽ trở thành một yêu cầu .


6

InnoDB có thể sẽ không giúp bạn - khóa cấp độ trang / hàng giúp giảm thiểu sự tranh chấp, nhưng nó không cảm thấy đó là vấn đề của bạn.

Có rất nhiều thứ cho thấy MyISAM chậm hơn InnoDB trong kịch bản blog trung bình (nhiều lần đọc hơn viết).

Trước khi thực hiện chuyển đổi, ít nhất bạn nên làm như sau

  • chạy mysqltuner sẽ cung cấp cho bạn một số lời khuyên về cấu hình (mặc dù nó không thể sai được hoặc tất cả đều biết)
  • bật ghi nhật ký truy vấn chậm, để nó trong một ngày hoặc lâu hơn, sau đó bắt đầu chọn lọc nhật ký và GIẢI THÍCH các truy vấn để xem điều gì đang xảy ra

Từ kinh nghiệm cá nhân, tôi thấy rằng việc thêm một chỉ mục vào trường không có nội dung trên wp_comments đã giúp ồ ạt trong tình huống cụ thể của tôi (giai đoạn bình luận bùng nổ, trong đó 10 hoặc hơn mọi người có thể cố gắng nhận xét cùng một lúc) và có thể tìm ra những truy vấn nào đang chạy chậm và tại sao có thể giúp bạn hiểu rõ hơn về vấn đề và giải pháp THỰC SỰ!

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.