Verstehen, wie WordPress MySQL verwendet

Veröffentlicht: 2014-09-30

Im Großen und Ganzen lässt sich WordPress in zwei Segmente unterteilen:

  • die Logik und die Vorlagen, die das Erscheinungsbild einer WordPress-Site erzeugen
  • die MySQL-Datenbank, die den gesamten Inhalt speichert und alles antreibt

Aber was ist MySQL?

MySQL ist unglaublich leistungsfähig, aber die Aktiendatenbank, die WordPress antreibt, ist zufällig auch leicht und robust. Einer der besten Teile eines leistungsstarken CMS wie WordPress ist, dass es die gesamte Datenbankverwaltung für den Benutzer übernimmt und sie vom Endbenutzer abstrahiert. WordPress-Benutzer und sogar Designer müssen nicht genau mit der Funktionsweise der Datenbank vertraut sein. Wenn Sie jedoch daran interessiert sind, wirklich zu verstehen, wie WordPress funktioniert, ist dieser Beitrag genau das Richtige für Sie.

Lassen Sie uns zunächst darüber sprechen, was MySQL ist. Insbesondere ist MySQL ein relationales Datenbankverwaltungssystem, kurz RDBMS. Ein RDBMS ist ein Container, der für die Verarbeitung und Ausführung von Structured Query Language (SQL) entwickelt wurde. SQL ist das, was eine Datenbank antreibt – es steuert die Struktur und Form der Datenbank und zeichnet auch Einfügungen, Löschungen, Änderungen usw. auf, die an dieser Datenbank vorgenommen werden.

Wie funktioniert MySQL?

Das ist alles ein bisschen technisch, also gehen wir einen Schritt zurück und überlegen, wie eine SQL-Datenbank aussehen würde.

SQL ist in Informationstabellen organisiert. Stellen Sie sich eine Tabelle im Großen und Ganzen als eine Tabelle in Excel vor. Zeilen und Spalten speichern Informationen gemäß einer vorgegebenen Struktur. Im Gegensatz zu einer Excel-Tabelle sind die Spalten (auch als Schlüssel oder manchmal Felder bezeichnet) einer SQL-Datenbank jedoch vorab vordefiniert und kategorisiert.

Die definierte Struktur oder Spalten von Tabellen in WordPress werden im Voraus festgelegt – sie ändern sich nicht, wenn eine Website wächst, es sei denn, ein Plugin oder ein Core-Update ändert sie ausdrücklich. Eine Spalte wird nicht nur im Voraus definiert, sondern ihr Typ wird auch definiert, bevor Datensätze darin abgelegt werden. Typen wie Zahlen (INT für ganze Zahlen), Wortfelder (TEXT oder VARCHAR für Textfelder) und andere (DATETIME für Datum und Uhrzeit) sind in der Datenbank voreingestellt. Wenn WordPress (oder ein Hacker) versucht, der Datenbank Daten hinzuzufügen, die nicht dem vorgegebenen Muster entsprechen, akzeptiert die Datenbank die Daten nicht.

Ein weiteres großes Merkmal von SQL-Datenbanken findet sich im Akronym RDBMS: das relationale Merkmal.

SQL-Tabellen und sogar bestimmte Schlüssel in einer Tabelle können sich auf andere Tabellen und Schlüssel beziehen. Dadurch können Benutzer Datenbanken aufbauen, die eng miteinander verknüpft sind, was eine bessere Organisation und mehr Effizienz bedeutet.

Angenommen, Sie möchten eine Datenbank mit Tweets erstellen, die Sie sich später ansehen möchten. Sie könnten eine Tabelle erstellen, die Informationen zu bestimmten Tweets enthält, die Sie gespeichert haben, z. B. den Inhalt des Tweets, wie viele Favoriten er hat und so weiter. Sie möchten auch Daten über die Person speichern, die es getwittert hat – wie ihr Name ist, wie viele Follower sie hat, solche Dinge.

Mit relationalen Datenbanken können Sie eine Tweet-Tabelle erstellen, die alle Daten zu bestimmten Tweets enthält, und dann können Sie eine Benutzertabelle erstellen, die alle Informationen über die Person enthält, die den betreffenden Tweet gesendet hat. Sie könnten dann die Schlüssel in den beiden Tabellen verknüpfen, damit die Datenbank (und damit Sie) wissen, welcher Benutzer mit welchem ​​​​Tweet verknüpft ist.

WordPress verwendet relationale Tabellen, um viele Daten miteinander in Beziehung zu setzen. Beispielsweise enthält die Tabelle wp_posts alle relevanten Daten zu einem einzelnen Beitrag auf WordPress. Die Tabelle wp_comments enthält jeden Kommentar, den jemand zu einem WordPress-Beitrag hinterlassen hat, aber wp_posts und wp_comments sind zwei verschiedene Tabellen in derselben Datenbank. WordPress baut eine Beziehung zwischen bestimmten Schlüsseln in der Tabelle wp_comments und der Tabelle wp_posts auf, damit WordPress herausfinden kann, welcher Kommentar zu welchem ​​Blogbeitrag gehört.

Diese Datenbank- und Tabellenstruktur wird in einer MySQL-Datenbank erstellt, wenn Sie WordPress zum ersten Mal einrichten. Von dort aus manipuliert WordPress nur die Werte oder Zeilen in jeder Tabelle, damit Ihre Website funktioniert.

Wenn Sie beispielsweise einen neuen Benutzer erstellen, wird eine Zeile mit allen Daten über den Benutzer (z. B. Benutzername, Passwort und Berechtigungsstufe) in die Tabelle wp_users eingefügt. Wenn sich ein Benutzer anmeldet, greift WordPress auf die Datenbank zu und gleicht die auf dem Anmeldebildschirm bereitgestellten Informationen mit der Datenbank ab. Stimmen sie nicht überein, wird die Anmeldung abgelehnt.

Wie MySQL Caching verwendet

WP Kein Caching

WordPress & MySQL ohne Caching.

Dasselbe Konzept gilt für Posts: Wenn du einen neuen Post schreibst und speicherst, speichert WordPress ihn als Zeile in der wp_posts-Datenbank. Es ist wichtig zu beachten, dass auch das Gegenteil gilt: Wenn eine Person, die eine Website anzeigt, auf eine Seite mit Inhalten zugreift, muss WordPress auf die Datenbank zugreifen, die Daten aus den Tabellen abrufen und sie dann auf ihrem Bildschirm darstellen. Für wenige Besucher kann ein normaler Server diese Last gut bewältigen. Wenn jedoch viele Leute Inhalte von der Website anfordern, können WordPress und die Datenbank nicht mit allen Anforderungen Schritt halten, und die Website kann zusammenbrechen. Deshalb ist die Verwendung einer Caching-Engine oder eines Plugins so wichtig.

Um wieder ein bisschen technisch zu werden, ist es wichtig, die Rechenkosten zu verstehen. Kosten bedeutet in diesem Fall nicht, Geld auszugeben oder Dinge zu kaufen. Es bedeutet, mehrere verschiedene Faktoren zu bewerten, die für die Rechengeschwindigkeit wichtig sind, wie z. B. Zeit, verfügbarer Speicher und Anzahl der auszuführenden Festplattenoperationen.

MySQL speichert all diese Informationen in einer Datenbank auf der Festplatte des Computers, auf dem sie gespeichert sind. Dies ist ein wirklich großartiges System, weil es ausfallsicher ist, viel Speicherplatz hat und den Speicher des Computers, auf dem es läuft, nicht zerstört. Im Vergleich zu einer Datenbank wie Redis, die alles im Arbeitsspeicher des Computers speichert, auf dem sie ausgeführt wird, bietet MySQL viel Stabilität und nimmt Ihnen die Sorge vor Datenverlust.

Die Stabilität von MySQL hat jedoch ihren Preis: Geschwindigkeit. WordPress immer und immer wieder auf dieselben Schlüssel in einer Datenbank zugreifen zu müssen, sollte als „teuer“ angesehen werden. Es kostet viel, auf die Datenbank zuzugreifen, eine Festplattenoperation durchzuführen, diese Daten zurückzubringen und sie dann zu rendern.
WP-Caching

WordPress & MySQL mit Caching. Hinweis: Die Web-, MySQL- und Caching-Server werden im Allgemeinen gleichzeitig auf demselben Server ausgeführt. Dieses Diagramm trennt sie zu Illustrationszwecken.

Caching ist eine großartige Lösung für dieses Problem. Es nimmt diesen endgültig gerenderten HTML-Code und hält ihn für einen kurzen Zeitraum fest, vielleicht 30 Sekunden oder so. Wenn jemand dieselbe Seite anfordert, stellt die Caching-Engine ihm diese bereits gerenderte Seite bereit und überspringt den gesamten Prozess der Interaktion mit der Datenbank. Aus diesem Grund ist es wichtig, entweder WordPress-Caching-Plugins zu installieren oder einen verwalteten Hosting-Service zu verwenden, der das Caching für Sie übernimmt, wenn Sie Websites erstellen. Wenn ein Beitrag beispielsweise auf der Startseite von Reddit landet, wird Ihre Website unter dem Druck des gesamten neuen Verkehrs ohne installiertes Caching zusammenbrechen.

Die elf MySQL-Tabellen von WordPress

WP3.8-ERD

WordPress 3.8 Standard-MySQL-Tabellen. Bild mit freundlicher Genehmigung von WordPress Codex, lizenziert unter GPL

Nachdem wir nun verstanden haben, wie einige dieser Datenbanken und Tabellen tatsächlich funktionieren, lassen Sie uns über die elf spezifischen Tabellen sprechen, die WordPress standardmäßig erstellt und verwendet:

  • wp_commentmeta – Alle mit Kommentaren verknüpften Metadaten wie Schlüssel und Werte werden in dieser Datenbank gespeichert. Es enthält keine Metadaten wie Autor und Sendedatum, sondern verschiedene Daten, die WordPress gelegentlich verwendet. Diese Daten sind manchmal optional oder werden nicht verwendet. Es bezieht sich direkt auf wp_comments.

  • wp_comments – Diese Tabelle enthält alle Kommentare zu WordPress-Beiträgen und -Seiten sowie alle zugehörigen Daten wie den Autor, seine E-Mail-Adresse, das Sendedatum und den Beitrag, in dem der Kommentar hinterlassen wurde.

  • wp_links – Diese Datenbank wird verwendet, um Linkdaten in WordPress-Beiträgen zu enthalten, wurde jedoch vor einigen WordPress-Versionen eingestellt. Obwohl es immer noch da ist, ist es zweifelhaft, dass Sie dieses benutzt sehen werden.

  • wp_options – Alle Optionen, die im Einstellungsfenster festgelegt wurden, werden in dieser Datenbank gespeichert.

  • wp_postmeta – Wie wp_commentmeta enthält wp_postmeta optionale Daten über Beiträge. Wenn es keinen bestimmten Anwendungsfall gibt, wird dieser wahrscheinlich nicht stark genutzt.

  • wp_posts – wp_posts enthält alle Daten über Beiträge und die damit verbundenen Daten. Diese Tabelle wird sehr häufig verwendet und enthält den gesamten Inhalt einer Website.

  • wp_terms – Diese Tabelle speichert Inhalte wie Tags und Kategorien, mit denen Beiträge klassifiziert sind.

  • wp_term_relationships – Diese Tabelle ist für die Aufrechterhaltung der Beziehungen zwischen Posts und ihren zugehörigen Kategorien und Tags verantwortlich. Auch hier wird eine MySQL-Beziehung eingerichtet: Die Tabelle ist über die Tabelle wp_term_taxonomy sowohl mit Beiträgen als auch mit Begriffen verbunden.

  • wp_term_taxonomy – Dies behandelt die Nachverfolgung, welche Art von Taxonomien mit Beiträgen verknüpft sind. Es verlinkt zurück zu wp_terms sowie zu wp_term_relationships und protokolliert nur Assoziationen mit Kategorien, Tags und so weiter.

  • wp_usermeta – Eine weitere Metatabelle, wp_usermeta, verarbeitet alle optionalen Metadaten, die mit wp_users verknüpft sind.

  • wp_users – wp_users enthält alle Daten zu WordPress-Benutzern, einschließlich Informationen wie Benutzernamen, Administratorrechte und verschlüsselte Passwörter.

MySQL kann auf den ersten Blick einschüchternd wirken, aber bei WordPress sind die Tabellen so angelegt, dass sie nicht nur sehr sinnvoll sind, sondern auch Geschwindigkeit und Effizienz fördern. Wenn Sie das nächste Mal an einer WordPress-Site arbeiten, denken Sie an die Struktur der MySQL-Datenbank, die die Site betreibt. Ein gründliches Verständnis der Datenbank der Website kann sicherstellen, dass Ihre Website sicher, felsenfest und äußerst effizient ist.