WordPress Database Slow – sollte ich zu InnoDB wechseln?

Ich habe eine WordPress-Site mit weit über 10k Posts, und die Dinge beginnen langsam zu werden, wenn ich Beiträge hinzufüge und bearbeite. Seiten laden sich schnell und einfach für die Benutzer, zusammen mit den Admin-Listen der Posts, aber wenn es zu Schreibvorgängen oder Aktualisierungen kommt, geht der Server zu 100% CPU und benötigt eine lange Zeit (manchmal länger als PHP’s Timeout von 60s).

Ich denke, dass dies wahrscheinlich mit der Sperrung von MyISAM auf Tabellenebene zu tun hat, und denke darüber nach, dies auf InnoDB umzustellen. Was sind die Konsequenzen dafür?

Einige Statistiken:

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

Ich weiß, dass es viele andere Optimierungen gibt, die ich machen kann, aber meine Gefühle sind, dass dies die größte Wirkung haben könnte.

Vielen Dank

Edit : Ich habe eines der Hauptprobleme gefunden, die die Langsamkeit verursachen, es war YARPP (Yet Another Related Posts Plugin), das jedes Mal die “Verwandtschaft” regenerierte, und dies schien aufgrund der 2k + -Tags, die wir haben, zu sein. Ich habe die Option “Tags berücksichtigen” deaktiviert und sie hat sich erheblich beschleunigt.

Auch andere Plugins, die Dinge neu generieren, können diese Art von Problemen verursachen, wie einige XML-Sitemap-Plugins.

Also, mein unmittelbares Problem ist getriggers, obwohl ich immer noch gerne eine gute Antwort auf InnoDB vs MyISAM für WordPress hören würde!

Solutions Collecting From Web of "WordPress Database Slow – sollte ich zu InnoDB wechseln?"

Ich würde tatsächlich zu InnoDB wechseln. Tischverriegelung / Reihenverriegelung wurde lange von vielen diskutiert. Ich würde mich immer für InnoDB entscheiden. Es gibt jedoch noch einen weiteren Grund, InnoDB zu wählen … CACHING .

Während die meisten Leute sich rühmen, dass MyISAM schneller ist, vergessen die meisten Leute, dass der Cache für MyISAM, der Schlüsselspeicher (gesetzt von key_buffer_size), nur Indexseiten aus .MYI-Dateien zwischenspeichert. Es speichert niemals Datenseiten. Es hat ein offizielles Maximum von 4 GB in 32-Bit-Systemen. 8 GB ist das beste Maximum für 64-Bit.

Der InnoDB-Pufferpool speichert die Daten- und Indexseiten zwischen. Abhängig vom Server, den Sie haben, können Sie den gesamten Datensatz im RAM zwischenspeichern. Sie können InnoDB für bis zu 80% RAM und 10% für DB Conenctions einstellen und 10% für das Betriebssystem lassen. Dies gilt auch für verschiedene Betriebssysteme .

Ich habe diese Drupal-Kunden mit großartigem Erfolg empfohlen . Es gilt auch für WordPress . Ich habe DB Unterstützung für Kunden mit WordPress zur Verfügung gestellt. Gleiche Verbesserungen.

Sie können Speicher für InnoDB immer effektiver konfigurieren , damit Sie mehr MyISAM verwenden können. Es gibt immer eine Möglichkeit, InnoDB an Ihre performancesanforderungen anzupassen . Wenn Ihre Daten wachsen, wird es irgendwann zur Anforderung werden .

InnoDB wird Ihnen wahrscheinlich nicht helfen – Sperren auf Seiten- / Zeilenebene helfen Konflikte zu mildern, aber es ist nicht Ihr Problem.

Es gibt eine Menge Dinge, die darauf hindeuten, dass MyISAM im durchschnittlichen Blog-Szenario langsamer ist als InnoDB (viel mehr Lesevorgänge als Schreibvorgänge).

Bevor Sie einen Wechsel vornehmen, sollten Sie zumindest Folgendes tun

  • Führen Sie mysqltuner aus, das Ihnen einige Konfigurationshinweise geben wird (es ist jedoch nicht unfehlbar oder allwissend)
  • Aktivieren Sie die langsame Abfrageprotokollierung, lassen Sie sie für etwa einen Tag stehen und beginnen Sie dann mit dem Durchsuchen des Protokolls und dem ERKLÄREN der Abfragen, um zu sehen, was passiert

Aus eigener Erfahrung habe ich herausgefunden, dass das Hinzufügen eines Indexes zu einem nicht-indizierten Feld auf wp_comments in meiner speziellen Situation massiv geholfen hat (Perioden von stoßartigem Kommentieren, wo 10 oder mehr Personen gleichzeitig Kommentare abgeben könnten), und es ist möglich, das herauszufinden Welche Abfragen laufen langsam und warum führen Sie zu einem besseren Verständnis des Problems, und eine echte Lösung!