Wordpress Database Slow - soll ich zu InnoDB wechseln?

11

Ich habe eine WordPress-Site mit weit über 10.000 Posts, und die Dinge beginnen sehr langsam zu werden, wenn ich Posts hinzufüge und bearbeite. Die Seiten werden für Benutzer zusammen mit den Administratorlisten der Beiträge schnell geladen. Wenn jedoch Schreib- oder Aktualisierungsvorgänge ausgeführt werden, geht der Server auf 100% CPU über und dauert lange (manchmal länger als das Zeitlimit von 60 Sekunden für PHP).

Ich denke, dass dies wahrscheinlich mit der Sperre auf Tabellenebene von MyISAM zu tun hat, und denke darüber nach, dies auf InnoDB umzustellen. Was bedeutet dies?

Einige Statistiken:

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

Ich weiß, dass ich noch viele andere Optimierungen vornehmen kann, aber ich bin der Meinung, dass dies den größten Einfluss haben könnte.

Vielen Dank

Bearbeiten : Ich habe eines der Hauptprobleme gefunden, das die Langsamkeit verursacht. Es war YARPP (ein weiteres Plugin für verwandte Beiträge), das jedes Mal die "Verwandtschaft" neu generierte, und dies schien auf die 2k + -Tags zurückzuführen zu sein, die wir haben. Ich habe die Option "Tags berücksichtigen" deaktiviert und sie hat sich erheblich beschleunigt.

Auch andere Plugins, die Dinge neu generieren, können solche Probleme verursachen, z. B. einige XML-Sitemap-Plugins.

Mein sofortiges Problem ist also gelöst, obwohl ich immer noch gerne eine gute Antwort auf InnoDB vs MyISAM für Wordpress hören würde!

Adam Heath
quelle

Antworten:

11

Ich würde in der Tat zu InnoDB wechseln. Das Sperren von Tabellen / Zeilen wird von vielen schon lange diskutiert. Ich würde InnoDB immer zweifellos wählen. Es gibt jedoch noch einen weiteren wichtigen Grund, sich für InnoDB zu entscheiden ... CACHING .

Während die meisten Leute damit prahlen, dass MyISAM schneller zum Lesen ist, vergessen die meisten Leute, dass der viele Cache für MyISAM, der als Schlüsselcache bezeichnet wird (festgelegt durch key_buffer_size), nur Indexseiten aus .MYI-Dateien zwischenspeichert. Es werden niemals Datenseiten zwischengespeichert. Es hat ein offizielles Maximum von 4 GB in 32-Bit-Systemen. 8 GB sind das beste Maximum für 64-Bit.

Der InnoDB-Pufferpool speichert die Daten- und Indexseiten zwischen. Abhängig von Ihrem Server können Sie bis zu dem gesamten Datensatz im RAM zwischenspeichern. Sie können InnoDB für bis zu 80% RAM und 10% für DB Conenctions optimieren und 10% für das Betriebssystem belassen. Dies gilt auch für verschiedene Betriebssysteme .

Ich habe diese Dinge Drupal-Kunden mit erstaunlichem Erfolg empfohlen . Dies gilt auch für Wordpress . Ich habe DB-Unterstützung für Clients mit WordPress bereitgestellt. Gleiche Verbesserungen.

Sie können den Speicher für InnoDB immer effektiver konfigurieren als für MyISAM. Es gibt immer eine Möglichkeit, InnoDB zu tweeken, um Ihren Leistungsanforderungen zu entsprechen . Wenn Ihre Daten wachsen, werden sie schließlich zu einer Anforderung .

RolandoMySQLDBA
quelle
6

InnoDB wird Ihnen wahrscheinlich nicht helfen - das Sperren auf Seiten- / Zeilenebene hilft, Konflikte zu mindern, aber es scheint nicht Ihr Problem zu sein.

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

Bevor Sie einen Wechsel vornehmen, sollten Sie mindestens Folgendes tun

  • Führen Sie mysqltuner aus, um einige Konfigurationshinweise zu erhalten (es ist jedoch nicht unfehlbar oder allwissend).
  • Aktivieren Sie die langsame Abfrageprotokollierung, lassen Sie sie etwa einen Tag lang stehen und durchsuchen Sie dann das Protokoll und erklären Sie die Abfragen, um zu sehen, was los ist

Aus persönlicher Erfahrung heraus stellte ich fest, dass das Hinzufügen eines Index zu einem nicht indizierten Feld in wp_comments in meiner speziellen Situation (Perioden mit heftigen Kommentaren, in denen etwa 10 Personen gleichzeitig versuchen könnten, Kommentare abzugeben) massiv hilfreich war, und es ist möglich, dass dies herausgefunden wird Welche Abfragen laufen langsam und warum können Sie zu einem besseren Verständnis des Problems und einer WIRKLICHEN Lösung führen!

anu
quelle