Wordpress Veritabanı Yavaş - InnoDB'ye geçmeli miyim?


12

10'dan fazla yayın içeren bir WordPress sitem var ve yayın ekleyip düzenlediğimde işler çok yavaş olmaya başlıyor. Sayfalar, kullanıcılar için yönetici listeleriyle birlikte güzel ve hızlı yüklenir, ancak yazma veya güncelleme gerçekleştiğinde sunucu% 100 CPU'ya gider ve uzun zaman alır (bazen PHP'nin 60'lı zaman aşımından daha uzun).

Bunun MyISAM'in tablo düzeyinde kilitlenmesi ile ilgili olduğunu düşünüyorum ve bunu InnoDB'ye geçirmeyi düşünüyorum. Bunu yapmanın sonuçları nelerdir?

Bazı istatistikler:

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

Yapabileceğim başka optimizasyonlar olduğunu biliyorum, ancak hislerim bunun en büyük etkiye sahip olabileceğidir.

Teşekkürler

Düzenleme : Yavaşlık neden büyük sorunlardan birini bulduk, her zaman "ilgililik" rejenerasyon YARPP (Yet Another Related Posts Eklentisi) oldu ve bu 2k + etiketleri nedeniyle görünüyordu. "Etiketleri dikkate al" seçeneğini kapattım ve önemli ölçüde hızlandı.

Ayrıca, şeyleri yeniden oluşturan diğer eklentiler, bazı XML site haritası eklentileri gibi bu tür sorunlara neden olabilir.

Yani, Wordpress için InnoDB vs MyISAM'a iyi bir cevap duymak isterim, ancak acil sorunum çözüldü!

Yanıtlar:


11

Gerçekten de InnoDB'ye geçecektim. Masa kilitleme / sıra kilitleme uzun zamandır birçok kişi tarafından tartışılmıştır. Her zaman InnoDB eller aşağı seçin. Ancak, InnoDB ... CACHING'i seçmenin başka bir derin nedeni daha var .

Çoğu kişi MyISAM'ın okumalar için daha hızlı olduğunu söylese de, çoğu kişi MyISAM için anahtar önbellek (key_buffer_size tarafından ayarlanır) adı verilen birçok önbelleğin yalnızca .MYI dosyalarından dizin sayfalarını önbelleğe aldığını unutur. Veri sayfalarını asla önbelleğe almaz. 32-bit sistemlerde resmi maksimum 4GB'a sahiptir. 8GB, 64 bit için en iyi maksimum değerdir.

InnoDB Arabellek Havuzu veri ve dizin sayfalarını önbelleğe alır. Sahip olduğunuz sunucuya bağlı olarak, RAM'deki tüm veri kümesini önbelleğe alabilirsiniz. InnoDB'yi DB Bağlantıları için% 80 ve% 10'a kadar ayarlayabilir ve işletim sistemi için% 10 bırakabilirsiniz. Bu, farklı işletim sistemleri için bile geçerlidir .

Bunları harika bir başarı ile Drupal müşterileri için tavsiye ettim . Wordpress için de geçerlidir . WordPress kullanan istemciler için DB desteği sağladım. Aynı gelişmeler.

InnoDB için belleği her zaman daha fazla MyISAM yapabileceğinizden daha etkili bir şekilde yapılandırabilirsiniz . InnoDB'yi performans gereksinimlerinize uygun hale getirmenin her zaman bir yolu vardır . Verileriniz büyüdükçe, sonunda bir gereklilik haline gelecektir .


6

InnoDB muhtemelen size yardımcı olmaz - sayfa / satır düzeyinde kilitleme, çekişmeyi azaltmaya yardımcı olur, ancak bu sizin sorununuz gibi hissettirmez.

Ortalama blog senaryosunda (yazımlardan çok daha fazla okuma) MyISAM'ın InnoDB'den daha yavaş olduğunu gösteren bir çok şey var.

Geçiş yapmadan önce en azından aşağıdakileri yapmanız gerekir

  • size bazı yapılandırma önerileri verecek mysqltuner'ı çalıştırın (yanılmaz değil veya tüm bilmek olsa da)
  • yavaş sorgu günlüğünü açın, bir gün kadar bırakın ve sonra günlüğü elemeye başlayın ve neler olup bittiğini görmek için sorguları KEŞFEDİN

Kişisel deneyimlerime dayanarak, wp_comments üzerine dizine eklenmemiş bir alana bir dizin eklemenin özel durumumda büyük ölçüde yardımcı olduğunu buldum (yoğun yorumlama dönemleri, 10 kişi aynı anda yorum yapmaya çalışıyor olabilir) ve bunu bulmak mümkündür. hangi sorgular yavaş çalışıyor ve neden sorunu daha iyi anlamanıza ve GERÇEK bir çözüme neden olabilir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.