Leitfaden: MySQL-Tabellen automatisch reparieren und optimieren

Leitfaden: MySQL-Tabellen automatisch reparieren und optimieren

MySQL-Datenbanken bilden das Herzstück vieler Webseiten und Anwendungen. Mit der Zeit können Tabellen jedoch fragmentiert, beschädigt oder leistungsschwach werden. Typische Symptome sind:

  • Die Webseite ist nachts während Backups nicht erreichbar
  • Die Webseite is sporadisch down oder sehr langsam
  • Datenbankabfragen benötigen unverhältnismäßig lange

Oft liegt es an MyISAM-Tabellen (die ganze Tabellen sperren können) oder an Tabellen ohne Indizes, die große Datenmengen komplett in den Arbeitsspeicher laden müssen.

Zum Glück stellt MySQL Werkzeuge bereit, um Tabellen automatisch zu prüfen, reparieren und optimieren. Außerdem lassen sich durch einen Wechsel von MyISAM zu InnoDB und das Anlegen von Primärschlüsseln/Indizes häufig massive Performance-Verbesserungen erzielen.

1. Tabellen automatisch reparieren und optimieren

Dafür eignet sich das Tool mysqlcheck. Mit einem einzigen Befehl können Sie alle Datenbanken prüfen, reparieren und optimieren, auf die Ihr MySQL-Benutzer Zugriff hat:

mysqlcheck -u IHR_DB-BENUTZER -p'IHR_PASSWORT' --all-databases --optimize --auto-repair --silent
  • -u IHR_DB_BENUTZER -> Login mit dem Datenbank-Benutzer (Hinweis: In unseren Webhosting-Tarifen haben Sie in der Regel keinen MySQL-/MariaDB-Root-Zugang. Verwenden Sie daher einfach Ihren Datenbank-Benutzernamen und das zugehörige Passwort. mit --all-databases werden dann automatisch alle Datenbanken optimiert, auf die dieser Benutzer zugreifen darf.)
  • -p'IHR_PASSWORT' -> Passwort für diesen Datenbank-Benutzer (ohne Leerzeichen zwischen -p und Passwort; alternativ nur -p und Passwort interaktiv eingeben)
  • --all-databases -> führt den Check auf allen Datenbanken aus, auf die dieser Benutzer Zugriff hat
  • --optimize -> optimiert Tabellen (ähnlich OPTIMIZE TABLE)
  • --auto-repair -> repariert defekte Tabellen automatisch
  • --silent -> unterdrückt unnötige Ausgaben

Alternativ können Sie die Optimierung oder Reparaturen auch über phpMyAdmin vornehmen. Wählen Sie dort die entsprechende Datenbank aus, klicken Sie auf den Reiter "Struktur", wählen Sie die gewünschten Tabellen (oder alle über die Checkbox "Alle auswählen") aus und klicken Sie im Dropdown bei "markierte:" den Punkt "Optimiere Tabelle", um die entsprechenden Tabellen zu optimieren.

Wichtig: Während mysqlcheck Tabellen bearbeitet, werden diese gesperrt. Bei sehr großen oder produktiven Tabellen sollten Sie den Vorgang sorgfältig planen, da es zu kurzen Ausfällen kommen kann.

2. Typische Probleme mit MyISAM-Tabellen

MyISAM setzt beim Arbeiten mit Tabellen sogenannte Locks:

  • READ LOCK -> blockiert die gesamte Tabelle für Schreibvorgänge
  • WRITE LOCK -> blockiert die gesamte Tabelle für alle anderen Vorgänge

Das führt zu Problemen wie:

  • nachts down -> Backups mit mysqldump setzen WRITE LOCKs
  • sporadisch down -> gleichzeitige Schreib- und Lesezugriffe blockieren sich
  • sehr langsam -> Tabellen werden komplett gesperrt und erst nach Abschluss des Vorgangs freigegeben

Lösung: Umwandlung in InnoDB

InnoDB sperrt nicht ganze Tabellen, sondern arbeitet mit Row-Level-Locks. Das reduziert Blockaden und erhöht die Performance bei gleichzeitigen Zugriffen.

SQL-Befehl zur Umwandlung:

ALTER TABLE TABELLEN_NAME ENGINE = InnoDB;

Tipp: Vorher Rücksprache mit Agentur oder CMS-Hersteller halten, da sich das Verhalten der Anwendung ändern kann.

3. Tabellen ohne Primärschlüssel / Indizes

Tabellen ohne Primärschlüssel oder Index sind extrem ineffizient. MySQL muss bei einer Abfrage dann oft die gesamte Tabelle von der Festplatte in den RAM laden und durchsuchen.

Das führt bei großen Tabellen (z.B. Artikel, Kunden, Bestellungen) zu langen Ladezeiten.

Lösung: Indizes hinzufügen

Ein Primärschlüssel (PRIMARY KEY) oder Index strukturiert die Tabelle in Pages. Dadurch kann MySQL gezielt Teile der Tabelle laden und durchsuchen.

Beispiel:

ALTER TABLE TABELLEN_NAME ADD PRIMARY KEY (id);

Auch hier gilt: Vorher Abstimmung mit der Agentur oder dem CMS-Hersteller, um mögliche Seiteneffekte zu vermeiden.

4. Vorgehen in der Praxis

1. mysqlcheck regelmäßig ausführen

  • z.B. als Cronjob in der Nacht
  • für Reparatur & Optimierung

2. Tabellen-Engines prüfen

  • MyISAM-Tabellen nach Möglichkeit in InnoDB umwandeln

3. Indizes kontrollieren

  • Tabellen ohne Primärschlüssel oder Index identifizieren
  • nach Rücksprache mit der Agentur optimieren

4. nginx/MySQL neu laden

  • nach Änderungen an Konfigurationen oder Engines

Mit mysqlcheck lassen sich MySQL-Tabellen unkompliziert prüfen, reparieren und optimieren. Durch den Umstieg von MyISAM auf InnoDB und das Setzen von Indizes erhöhen Sie zusätzlich die Performance und Stabilität Ihrer Datenbank - und verhindern Ausfälle oder langsame Ladezeiten Ihrer Website.

Geschafft! Ihre MySQL-Datenbank ist jetzt gewartet, optimiert und bereit für zuverlässige und schnelle Abfragen!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Managed Server

Zu den Managed Server Paketen