Was ist eine gute Strategie für die Planung des WordPress DB-Wachstums?

9

In der Hoffnung auf Feedback zum Thema Optimierung und Aufrechterhaltung der Leistung, wenn eine WordPress-Datenbank wächst ... um ein Bild zu malen ... Nehmen wir an, Sie haben eine WordPress / Buddypress-MU-Site, die bei etwa 150 KB beginnt (Vanille-Installation). ... im Laufe der Zeit fügen Benutzer Blogs, Foren, Beiträge und Kommentare hinzu und die Datenbank wächst auf 5 MB .... dann auf 10 MB im nächsten Jahr .... Auch unter der Annahme, dass Hosting-Steuerelemente ein Standard-Colocated-Setup wie Cpanel oder Plesk sind.

  • Ab wann wirkt sich die Anzahl der Einträge in der Datenbank auf die Leistung der Front-End-Website aus?
  • Was können Sie als Website-Manager tun, damit dies reibungslos funktioniert, wenn Ihre Datenbank wächst?
  • Was können Sie in Bezug auf die Leistung nach dem 5. Jahr erwarten, wenn Ihre Datenbank zwischen 500 und 600 MB groß ist?

Vielen Dank für Ihr Feedback zum Halten eines engen Schiffes.

Grüße,

S.

Simon
quelle
3
Sie haben 7 Fragen gestellt und nur 1 akzeptiert. Keine gute Aufzeichnung. :-(
8
25mb ist nichts. Sie sollten sich Gedanken über die Datenbankgröße machen, wenn diese GB erreicht.
Dunhamzzz
Vielen Dank für Ihre Rückmeldung. Wenn wir Probleme mit der Leistung bei 500 MB haben, ist es wahrscheinlich unser Hosting-Unternehmen. PS Ging zurück und akzeptierte Antworten über Fragen hinweg.
Simon

Antworten:

4

Ihre spezifischen Fragen:

1) Es gibt keine strikte Begrenzung für die "Anzahl der Einträge", die eine Datenbank enthalten darf, bevor die Leistung beeinträchtigt wird. Die Leistung hängt ebenso stark von Ihrer Hardware und Konfiguration ab wie von der Größe und Struktur der Datenbank.

2) Wenn Sie sich Sorgen über die Skalierbarkeit Ihrer DB-Schicht machen, können Sie diese in einem Cluster oder auf einer Cloud-Box oder einem VPS ausführen, mit dem die Größe geändert werden kann. Wenn Ihre Datenbank langsam wird, können Sie die Größe ändern (normalerweise jedoch gegen Aufpreis). Diese Optionen erhöhen die Kosten, sind jedoch der beste Weg, um die Skalierbarkeit einer Datenbank sicherzustellen.

3) Dies hängt wirklich von Ihrem Hosting-Setup und Ihrer DB-Architektur ab. Aber im Allgemeinen (es sei denn, Sie haben eine wirklich billige Box) würde ich mir keine Sorgen um eine 30-MB-WordPress-Datenbank machen. WordPress indiziert Tabellen gut, und selbst eine OOB MySQL-Konfiguration sollte WordPress-Abfragen in einer Datenbank dieser Größe problemlos verarbeiten können. Wenn Sie in Gigabyte aufsteigen, müssen Sie sich möglicherweise ernsthaft mit Optionen zur Leistungsoptimierung befassen.

Allgemein:

Wenn Sie sich Sorgen um die Leistung machen, konzentrieren Sie sich darauf, Ihr vorhandenes MySQL-Setup zu optimieren und / oder eine Caching-Ebene einzurichten. Durch das Zwischenspeichern kann MySQL erheblich entlastet werden (insbesondere bei WordPress-Sites, da diese im Allgemeinen eine große Anzahl von DB-Abfragen ausführen).

Wenn Sie, nachdem Sie MySQL ordnungsgemäß optimiert und eine anständige Caching-Ebene eingerichtet haben, immer noch Bedenken haben, aus Ihrer Hardwarekonfiguration herauszuwachsen, können Sie eine Richtlinie zum Löschen von Inhalten nach x Zeit einführen.

Keines dieser Dinge ist spezifisch für WordPress. Und ich bin mir nicht sicher, ob die Frage Antworten enthält, die für keine Website oder Anwendung gelten, die auf einem LAMP-Stack ausgeführt wird. Aber vielleicht hat jemand anderes Vorschläge zu MU-Tabellenstrukturen oder anderen WP-spezifischen DB-Tricks ... Ich weiß nicht.

MathSmath
quelle
4

Aus MySQL-Sicht habe ich Vorschläge, wie das Caching von Daten / Indizes für eine MySQL-Instanz verbessert werden kann.

Beachten Sie, dass es für MySQL zwei wichtige Speicher-Engines gibt

  • MyISAM
  • InnoDB

Ihre Caching-Mechanismen sind unterschiedlich. Sie können etwas tun, um die Speicher-Engine Ihrer Wahl zu optimieren.

MyISAM

MyISAM speichert nur Indexseiten zwischen. Es werden niemals Daten zwischengespeichert. Sie können zwei Dinge tun, um die E / A für MyISAM-Tabellen zu verbessern.

MyISAM-Verbesserung Nr. 1

Jede MyISAM-Tabelle mit VARCHAR-Spalten kann intern in CHAR konvertiert werden, ohne das ursprüngliche Design zu berühren. Angenommen, Sie haben eine Tabelle mit dem Namen mydb.mytable und möchten die E / A dafür verbessern. Führen Sie die folgenden Schritte aus:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Dies erhöht die Größe der Tabelle um 60% bis 100%, führt jedoch zu einer Leistungssteigerung der E / A um 20 bis 30%, ohne dass etwas anderes geändert wird . Ich habe darüber zuvor im DBA StackExchange geschrieben:

MyISAM-Verbesserung Nr. 2

Sie müssen den MyISAM-Schlüsselcache vergrößern (Größe nach key_buffer_size ). Führen Sie diese Abfrage bitte aus:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

Dies zeigt Ihnen die ideale key_buffer_size basierend auf Ihrem aktuellen Datensatz.

InnoDB

InnoDB speichert sowohl Daten als auch Indizes zwischen. Wenn Sie alle Ihre Daten in InnoDB konvertiert haben und derzeit WordPress aus einer InnoDB-Datenbank ausführen , müssen Sie die Größe Ihres InnoDB- Pufferpools (Größe mit innodb_buffer_pool_size ) anpassen . Führen Sie diese Abfrage bitte aus:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

Dies zeigt Ihnen die ideale key_buffer_size basierend auf Ihrem aktuellen Datensatz.

Projektionen

Wenn Sie davon ausgehen, dass Ihr Dataset 20-mal so stark wächst, multiplizieren Sie einfach das, was diese Abfrage empfiehlt, mit 20. Angenommen, Ihr MyISAM-Dataset ist 15 MB groß und 3 MB ist die Summe Ihrer Indizes. Wenn Sie davon ausgehen, dass Sie 20-mal so viele Daten haben, setzen Sie die key_buffer_size in /etc/my.cnf wie folgt auf 60 MB:

[mysqld]
key_buffer_size=60M

Starten Sie dann MySQL neu. Das Gleiche gilt für den InnoDB-Pufferpool.

Wenn alle Ihre Daten InnoDB sind, müssen Sie eine vollständige Bereinigung Ihrer InnoDB-Infrastruktur durchführen, die ich in StackOverflow veröffentlicht habe .

RolandoMySQLDBA
quelle
2

Ab wann wirkt sich die Anzahl der Einträge in der Datenbank auf die Leistung der Front-End-Website aus?

Wenn Abfragen das Ressourcenlimit Ihres Hosting-Kontos erreichen.

Was können Sie als Website-Manager tun, damit dies reibungslos funktioniert, wenn Ihre Datenbank wächst?

Behalten Sie die Ressourcennutzung im Auge. Ergreifen Sie Maßnahmen, um die Ressourcen zu erhöhen und / oder die Nutzung zu optimieren.

Was können Sie in Bezug auf die Leistung nach dem 5. Jahr erwarten, wenn Ihre Datenbank 25 - 30 MB groß ist?

Sollte keine Änderung der Leistung auf dieser winzigen Datenbank sein.

Wenn Sie erwarten, dass Ihre Website so langsam wächst, haben Sie genügend Zeit, um zu lernen, wie Sie mit Wachstum umgehen.

shanebp
quelle