MySQL ist ein relationales Open-Source-SQL-Databaseverwaltungssystem, das von Oracle entwickelt und unterstützt wird.

Das ist die kurze, ein Satz lange Antwort auf die Frage „Was ist MySQL?“, aber lass uns das in Begriffe aufteilen, die etwas verständlicher sind.

Eine Database ist lediglich eine strukturierte Sammlung von Daten, die zur einfachen Verwendung und zum einfachen Abrufen organisiert sind. Für eine WordPress-Seite sind diese „Daten“ Dinge wie der Text deines Blog-Posts, Informationen für alle registrierten User auf deiner Seite, automatisch geladene Daten, wichtige Einstellungskonfigurationen usw.

MySQL ist nur ein beliebtes System, das diese Daten für dich speichern und verwalten kann, und es ist eine besonders beliebte Databaselösung für WordPress-Seiten.

Leseempfehlung: Wie du den Fehler „MySQL Server Has Gone Away“ in WordPress behebst und Wie du den MySQL 1064 Fehler behebst.

Kommen wir jetzt etwas intensiver in die Frage.

Was ist MySQL? Genauer erklärt

MySQL wurde ursprünglich bereits 1995 eingeführt. Seitdem hat es einige Besitzer- / Verantwortungsänderungen durchlaufen, bevor es 2010 zur Oracle Corporation kam. Während Oracle jetzt die Verantwortung trägt, ist MySQL immer noch Open-Source-Software, was bedeutet, dass du es frei verwenden und ändern kannst.

MySQL-Logo
MySQL-Logo (Bildquelle: MySQL/Oracle)

Der Name stammt aus der Kombination von „My“ – dem Namen der Tochter des Mitbegründers – mit SQL – der Abkürzung für Structured Query Language, einer Programmiersprache, mit der du auf Daten in einer relationalen Database zugreifen und diese verwalten kannst.

Um zu verstehen, wie MySQL funktioniert, ist es wichtig, zwei miteinander verbundene Konzepte zu kennen:

Relationale Databases

Beim Speichern von Daten in einer Database stehen dir verschiedene Ansätze zur Verfügung.

MySQL wählt einen Ansatz, der als relationale Database bezeichnet wird.

Bei einer relationalen Database werden deine Daten in mehrere separate Speicherbereiche, sogenannte Tabellen, aufgeteilt, anstatt alles in einer großen Speichereinheit zusammenzufassen.

Angenommen, du möchtest zwei Arten von Informationen speichern:

  • Kunden – ihre Namen, Adresse, Details usw.
  • Bestellungen – wie welche Produkte gekauft wurden, der Preis, wer die Bestellung gemacht hat, etc.

Wenn du versuchst, all diese Daten in einem großen Topf zusammenzufassen, treten folgende Probleme auf:

  • Unterschiedliche Daten – Die Daten, die du für eine Bestellung sammeln musst, unterscheiden sich von denen für einen Kunden.
  • Doppelte Daten – jeder Kunde hat einen Namen und jede Bestellung hat auch den Namen eines Kunden. Der Umgang mit diesen doppelten Daten wird chaotisch.
  • Keine Organisation – wie verbindest du Bestellinformationen zuverlässig mit Kundeninformationen?

Um diese Probleme zu lösen, würde eine relationale Database eine separate Tabelle für Kunden und eine andere separate Tabelle für Bestellungen verwenden.

Du möchtest aber wahrscheinlich auch sagen können: zeige mir alle Bestellungen für John Doe. Hier kommt der relationale Teil ins Spiel.

Mithilfe eines so genannten „Schlüssels“ kannst du die Daten aus diesen beiden Tabellen miteinander verknüpfen, sodass du die Daten in verschiedenen Tabellen nach Bedarf bearbeiten und kombinieren kannst. Es ist wichtig zu beachten, dass ein Schlüssel nicht der Name des Kunden ist. Stattdessen verwendest du etwas, das zu 100% eindeutig ist, beispielsweise eine numerische ID-Nummer.

Wenn du dir jemals die Database deiner WordPress-Seite angesehen hast, wirst du feststellen, dass dieses relationale Modell verwendet wird, bei dem alle deine Daten in separate Tabellen unterteilt sind.

Standardmäßig verwendet WordPress 12 separate Tabellen, aber viele WordPress-Plugins fügen auch ihre eigenen Tabellen hinzu. Zum Beispiel hat die Database für die WordPress-Seite unten 44 separate Tabellen!

Ein Beispiel für verschiedene Tabellen in MySQL
Ein Beispiel für verschiedene Tabellen in MySQL

Um dieses relationale Konzept zu vervollständigen, sollten wir es spezifisch für WordPress machen.

WordPress speichert Blog-Posts in der Tabelle wp_posts und User in der Tabelle wp_users. Da diese beiden Tabellen jedoch durch einen Schlüssel verbunden sind, kannst du jedes Userkonto mit allen Blogeinträgen verknüpfen, die jeder User verfasst hat.

So sieht das in der Database aus.

Jedem Post wird ein post_author zugewiesen, bei dem es sich um eine eindeutige Identifikationsnummer handelt (dies ist der Schlüssel):

Die wp_posts Tabelle
Die wp_posts Tabelle

Wenn du dann sehen möchtest, welches Userkonto dieser Nummer entspricht, kannst du dir die ID in der Tabelle wp_users ansehen:

Die wp_users Tabelle
Die wp_users Tabelle

Der Schlüssel – die ID-Nummer – verbindet alles miteinander. Und so sind sie „miteinander verbunden“, obwohl die Daten in separaten Tabellen gespeichert sind.

Client-Server Modell

MySQL ist nicht nur ein relationales Databasesystem, sondern verwendet auch das sogenannte Client-Server-Modell.

Im Serverteil befinden sich deine Daten tatsächlich. Um auf diese Daten zugreifen zu können, musst du sie jedoch anfordern. Hier kommt der Client ins Spiel.

Unter Verwendung von SQL – der zuvor erwähnten Programmiersprache – sendet der Client eine Anfrage nach den vom Client benötigten Daten an den Databaseserver.

Wenn beispielsweise jemand einen Blogeintrag auf deiner Website besucht, sendet deine WordPress-Website mehrere SQL-Anforderungen an den Databaseserver, um alle Informationen abzurufen, die für die Übermittlung des Blogeintrags an den Webbrowser des jeweiligen Besuchers erforderlich sind. Es würde:

  • die Tabelle wp_posts abfragen, um den Inhalt für den Blog-Beitrag abzurufen
  • die Tabelle wp_users abfragen, um Informationen zur Autorenbox zu erhalten (mit dem oben gezeigten Schlüssel).
  • Etc.

Wenn du genau sehen möchtest, welche Arten von Databaseanfragen von deiner WordPress-Seite gestellt werden, kannst du ein wunderbares kostenloses Plugin namens Query Monitor verwenden, um das genaue Zusammenspiel zwischen deiner WordPress-Seite (dem Client) und dem Databaseserver zu sehen

Das Query Monitor-Plugin zeigt dir einzelne SQL-Abfragen an, die an den MySQL-Server gesendet wurden
Das Query Monitor-Plugin zeigt dir einzelne SQL-Abfragen an, die an den MySQL-Server gesendet wurden

Eine weitere Premium-Lösung, die du nutzen kannst, ist New Relic (Lizenz erforderlich). Wenn deine WordPress-Seite nicht auf den Datenbankserver zugreifen kann, wird die übliche Fehlermeldung „Fehler beim Herstellen einer Datenbankverbindung“ ausgelöst. Bei Kinsta verwenden wir das integrierte Kinsta APM-Tool, um deine Seiten zu überwachen.

Kinsta verwendet MariaDB, nicht MySQL: Was ist der Unterschied?

Hier bei Kinsta verwenden wir ein Databasesystem namens MariaDB, nicht MySQL. Alle Eigenschaften, die du mit MySQL gesehen hast, gelten jedoch auch für MariaDB.

Tatsächlich ist MariaDB eine Fork von MySQL, und MariaDBs führender Entwickler ist einer der Gründer von MySQL. Ein „Fork“ bedeutet lediglich, dass die MariaDB-Entwickler den ursprünglichen Open-Source-MySQL-Code als Basis genommen und darauf aufbauend MariaDB erstellt haben.

MariaDB hat zwar einen anderen Namen, ist jedoch eng mit MySQL verknüpft und bietet die Möglichkeit, vollständig durch „Drop-In“ zu ersetzen (dh du kannst nahtlos von MySQL zu MariaDB wechseln, ohne besondere Vorkehrungen treffen zu müssen).

MariaDB bietet zwar Interoperabilität mit MySQL, in einigen Bereichen jedoch auch eine verbesserte Leistung, was unserer Philosophie entspricht, die leistungsstärkste Architektur für die Stromversorgung deiner WordPress-Seite zu verwenden.

Rekapituliere: Was ist MySQL?

MySQL ist ein relationales Open-Source-Databaseverwaltungssystem. Für WordPress-Seiten bedeutet dies, dass du alle deine Blog-Posts, User, Plugin-Informationen usw. speichern kannst.

Diese Informationen werden in separaten „Tabellen“ gespeichert und mit „Schlüsseln“ verknüpft, weshalb sie relational sind.

Wenn deine WordPress-Seite auf diese Informationen zugreifen muss, sendet sie mithilfe von SQL eine Anfrage an den MySQL-Databaseserver (dies ist das Client-Server-Modell).

Kinsta verwendet MariaDB, nicht MySQL: MariaDB ist jedoch ein Fork von MySQL von einem der Mitbegründer von MySQL und bietet Drop-In-Ersatz-Interoperabilität sowie einige Leistungsverbesserungen. Daher gelten alle Kernkonzepte in diesem Artikel auch für MariaDB.

Wenn du bei Kinsta hostest, bieten wir sowohl direkten Databasezugriff als auch die Möglichkeit, Databaseverwaltungstools wie phpMyAdmin zu verwenden.