MySQL ist das verbreitetste relationale Datenbanksystem im Webhosting und liegt unter den meisten Websites, von WordPress bis Laravel. Die Daten stehen in Tabellen, gefragt wird mit SQL, und der Dienst läuft als eigenes Programm neben dem Webserver.
- MySQL
Das verbreitetste relationale Datenbanksystem im Webhosting, hinter WordPress wie hinter Laravel.
Beispiel: „Die MySQL-Datenbank des Shops lag bei acht Gigabyte, und der Umzug dauerte entsprechend.“Seit der Übernahme durch Oracle im Jahr 2010 gibt es die Abspaltung MariaDB, die in vielen Tarifen tatsächlich läuft. Für den Alltag sind beide austauschbar.
Abgrenzung zu PostgreSQL: Dieses gilt als strenger und bei komplexen Abfragen als mächtiger. Im Massenhosting ist MySQL verbreiteter, weil jedes Baukastensystem es voraussetzt.
Was MySQL im Betrieb bremst
Fehlende Indizes. Eine Abfrage ohne passenden Index liest die ganze Tabelle, und was bei tausend Zeilen niemandem auffällt, kostet bei einer Million Sekunden. Erkennen lässt sich das mit EXPLAIN vor der Abfrage.
Der zweite Fall ist das N-plus-1-Problem: Eine Schleife über hundert Datensätze erzeugt hundertundeine Abfrage. In Laravel löst das ein Eager Loading über with, in anderen Systemen eine Verbindung in der Abfrage selbst.
Welche MySQL-Einstellungen im Hosting zählen
Zwei: der Puffer für die Daten und die Zahl gleichzeitiger Verbindungen. Der Puffer heißt innodb_buffer_pool_size und sollte die Datenbank möglichst ganz aufnehmen, denn was hineinpasst, wird nicht von der Platte gelesen.
Bei Shared Hosting sind beide fest vorgegeben. Spürbar wird das an der Grenze gleichzeitiger Verbindungen, die bei einer Lastspitze erreicht wird und sich als Fehler beim Verbindungsaufbau zeigt.
Was beim Umzug einer MySQL-Datenbank schiefgeht
Die Zeichenkodierung. Eine Datenbank in latin1 und ein Abzug in utf8 ergeben Umlaute, die als zwei Zeichen erscheinen. Heute gehört utf8mb4 gesetzt, weil erst das Emojis und seltene Zeichen vollständig abdeckt.
Der zweite Punkt ist die Größe des Abzugs. Über phpMyAdmin scheitert der Import ab wenigen Dutzend Megabyte an Zeitgrenzen; über die Kommandozeile mit mysql und einer Datei läuft dasselbe in Minuten durch.