Inhalt
- 1) Bevor Sie beginnen (solide Grundlage)
- 2) Wo Sie alles in phpMyAdmin finden
- 3) Basiswartung: Prüfen / Analysieren / Optimieren / Reparieren
- 4) Indizierung und Abfrageoptimierung
- 7) Referenzielle Integrität & „verwaiste“ Daten
- 8) Schnelldiagnose mit phpMyAdmin
- 9) Echte Reparaturen (wenn etwas kaputt ist)
- 10) Häufige „Rezepte“ (Schritt für Schritt)
Dieser Artikel führt Sie Schritt für Schritt durch alles, was Sie direkt in phpMyAdmin tun können, um Ihre Datenbank gesund und schnell zu halten: Prüfen, Analysieren, Optimieren, Reparieren, Indizes, Zeichensatz, Kollation sowie einige nützliche SQL-Rezepte. Er ist für moderne MySQL/MariaDB-Versionen geschrieben und setzt voraus, dass Sie Zugriff auf phpMyAdmin mit einem Benutzer haben, der über ausreichende Berechtigungen verfügt.
1) Bevor Sie beginnen (solide Grundlage)
- Obligatorisches Backup. Exportieren Sie die Datenbank (SQL) aus phpMyAdmin: Datenbank öffnen → Exportieren → „Angepasst“ → DROP + CREATE einschließen.
- Wartungsfenster. Vorgänge wie „Optimieren/Analysieren“ sperren manchmal Tabellen. Führen Sie sie aus, wenn wenig Traffic herrscht.
- Kennen Sie Ihre Storage Engine.
- InnoDB: Standard in MySQL 8+. „REPAIR TABLE“ gilt hier nicht wirklich; „OPTIMIZE“ baut die Tabelle neu auf (äquivalent zu
ALTER TABLE ... FORCE). - MyISAM: unterstützt
REPAIR TABLE, aber erwägen Sie eine Migration zu InnoDB.
- InnoDB: Standard in MySQL 8+. „REPAIR TABLE“ gilt hier nicht wirklich; „OPTIMIZE“ baut die Tabelle neu auf (äquivalent zu
- Freier Speicherplatz. Das Neuaufbauen von Tabellen benötigt temporären Speicherplatz.
- Berechtigungen. Sie benötigen
ALTER,INDEX,LOCK TABLESusw. für viele Vorgänge.
2) Wo Sie alles in phpMyAdmin finden
- Wählen Sie die Datenbank in der linken Spalte aus.
- Haupt-Tabs: Struktur, SQL, Suche, Abfrage, Operationen, Export/Import.
- Auf Datenbankebene: mehrere Tabellen markieren und das Menü Mit Auswahl (unten) verwenden → Tabelle optimieren, Tabelle analysieren, Tabelle prüfen, Tabelle reparieren.
- Auf Tabellenebene: Registerkarte Operationen → Bereich Tabellenwartung (gleiche Aktionen).
- Die Registerkarte Struktur (einer Tabelle): Indizes und Spalten verwalten.
3) Basiswartung: Prüfen / Analysieren / Optimieren / Reparieren
3.1 Prüfen (Verifikation)
- Was es macht: führt
CHECK TABLEaus, um Beschädigungen/Fehler zu erkennen. - Wie: Tabellen auswählen → Mit Auswahl → Tabelle prüfen.
- SQL-Äquivalent:
CHECK TABLE `table_name` EXTENDED; - Ergebnisse interpretieren:
status = OKist in Ordnung; alles andere erfordert Maßnahmen (Optimieren/Reparieren oder Eingriff auf Serverebene).
3.2 Analysieren (Statistiken für den Optimizer)
- Was es macht:
ANALYZE TABLEaktualisiert Index-Statistiken; kann Ausführungspläne verbessern. - Wie: Mit Auswahl → Tabelle analysieren.
- SQL:
ANALYZE TABLE `table_name`; - Wann: nach großen Mengen an INSERT/DELETE/UPDATE oder wenn Sie ungewöhnliche EXPLAIN-Pläne sehen.
3.3 Optimieren (Defragmentierung & Speicherplatz)
- Was es macht:
OPTIMIZE TABLE(InnoDB → baut die Tabelle neu auf und erstellt Indizes neu; gibt Speicherplatz aus „Overhead“ frei). - Wie: Mit Auswahl → Tabelle optimieren.
- SQL:
OPTIMIZE TABLE `table_name`; - Wann: wenn die Spalte Overhead in der Tabellenliste hoch ist, nach vielen Löschungen oder Änderungen an Spalten mit variabler Länge (TEXT/VARCHAR).
3.4 Reparieren (nur MyISAM)
- Was es macht:
REPAIR TABLEversucht, MyISAM-Schlüssel/Dateien zu reparieren. - Wie: Mit Auswahl → Tabelle reparieren (nur für MyISAM aktiv).
- SQL:
REPAIR TABLE `table_name` QUICK; - Hinweis: Für InnoDB gilt „Reparieren“ nicht. Wenn eine InnoDB-Tabelle beschädigt erscheint, muss die Wiederherstellung auf Serverebene erfolgen (Backup/Restore, Recovery-Optionen), nicht in phpMyAdmin.
4) Indizierung und Abfrageoptimierung
- Warum: vollständige Unicode-Unterstützung (Emoji, richtige Diakritika).
- Sichere Reihenfolge: Server → Datenbank → Tabelle → Spalte. In phpMyAdmin:
- Auf Datenbankebene: gehen Sie zu Operationen → Kollation → wählen Sie
utf8mb4_0900_ai_ci(MySQL 8) oderutf8mb4_general_ci/utf8mb4_unicode_ci(kompatibel). - Auf Tabellenebene: Operationen → Tabellenoptionen → Kollation festlegen; dann ggf. Spalten konvertieren.
- Auf Datenbankebene: gehen Sie zu Operationen → Kollation → wählen Sie
- SQL:
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; - Hinweis: Erstellen Sie ein Backup und stellen Sie sicher, dass Ihre Anwendung (Treiber/ORM) denselben Zeichensatz/Kollation verwendet.
7) Referenzielle Integrität & „verwaiste“ Daten
- Aktivieren und verwenden Sie Fremdschlüssel (InnoDB) für Konsistenz.
- „Verwaiste“ Zeilen finden (Beispiel):
SELECT c.* FROM comments c LEFT JOIN posts p ON p.id = c.post_id WHERE p.id IS NULL; -- Kommentare ohne übergeordneten Beitrag - Constraints hinzufügen (nach Bereinigung):
ALTER TABLE comments ADD CONSTRAINT fk_comments_post FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE;
8) Schnelldiagnose mit phpMyAdmin
- Status / Variablen (Serverebene): Last, Verbindungen, Buffer Pool (InnoDB) prüfen. Sie können
SHOW STATUS LIKE 'Threads%';,SHOW ENGINE INNODB STATUS;im Tab SQL für Details ausführen. - Einschränkung: Persistente Konfigurationsänderungen (z. B.
innodb_buffer_pool_size) gehören inmy.cnf— nicht in phpMyAdmin.SET GLOBALkann zu Testzwecken genutzt werden, bleibt aber nach einem Neustart nicht erhalten.
9) Echte Reparaturen (wenn etwas kaputt ist)
- MyISAM: verwenden Sie
REPAIR TABLEin phpMyAdmin (siehe §3.4). - InnoDB:
- Versuchen Sie Export & Re-Import über phpMyAdmin, wenn die Tabelle zugänglich ist.
- Wenn nicht, ist ein Eingriff auf Serverebene nötig (Wiederherstellung aus Backup,
innodb_force_recovery,mysqlcheck). Dies wird nicht über phpMyAdmin durchgeführt.
- Server-Fehlerprotokolle sind die verlässlichste Quelle bei echten Korruptionsfällen.
10) Häufige „Rezepte“ (Schritt für Schritt)
10.1 Schnelle Optimierung der gesamten Datenbank
- Öffnen Sie die gewünschte Datenbank.
- Klicken Sie auf Alle auswählen.
- Menü Mit Auswahl → Tabelle analysieren.
- Dann Mit Auswahl → Tabelle optimieren.
- Überprüfen Sie die Ergebnisse (alles „OK“?).
10.2 Reindizierung nach vielen Änderungen
- Führen Sie Prüfen + Analysieren aus (siehe oben).
- Überprüfen Sie Indizes (Tab Struktur → Indizes).
- Fügen Sie Indizes hinzu/entfernen Sie sie basierend auf EXPLAIN.
- Führen Sie Optimieren aus, wenn „Overhead“ groß ist.
10.3 Unnötige/duplizierte Indizes entfernen (SQL)
-- Klassisches Duplikat: Sie haben UNIQUE(email) und INDEX(email)
SHOW INDEX FROM users;
-- Wenn Sie zwei Einträge in derselben Spalte sehen, behalten Sie den UNIQUE-Index:
DROP INDEX idx_users_email ON users;
10.4 Massenkonvertierung zu utf8mb4 (gesamte Datenbank)
- Vollständiges Backup.
- Operationen (auf Datenbankebene) → Kollation auf
utf8mb4_0900_ai_cisetzen. - Für jede Tabelle:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;