Die Optimierung Ihrer MySQL-Datenbanktabellen reorganisiert Tabellen- und Indexdaten, verringert den Speicherverbrauch und verbessert die I/O-Effizienz. Dies ist besonders nützlich, wenn phpMyAdmin bei großen Datenbanken Timeouts auftritt, da SSH eine zuverlässigere Methode für die Optimierung bietet.

Wie es geht

  1. Schritt 1: Verbinden via SSH und Ausführen des Optimierungsbefehls

    Verwenden Sie den folgenden Befehl, um alle Tabellen in Ihrer Datenbank zu optimieren:

    mysql -u username -ppassword -h hostname databasename -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print "optimize table " $1 ";"}' | mysql -u username -ppassword -h hostname databasename

    Ersetzen Sie die Platzhalter durch Ihre tatsächlichen Datenbankinformationen:

    • username: Ihr Datenbankbenutzername
    • password: Passwort des Benutzers
    • hostname: Aktiver Datenbank-Hostname
    • databasename: Name der Datenbank, in der Sie den Befehl ausführen

    Optional können Sie das Protokoll des Befehls erfassen, indem Sie >> results.txt anhängen, um die Ergebnisse später zu überprüfen.

  2. Schritt 2: Automatisieren mit einem Cron Job (Optional)

    Für eine monatliche automatische Optimierung erstellen Sie ein Shell-Skript mit folgendem Inhalt:

    #!/bin/sh
    /usr/bin/mysqlcheck -o -v -u USER -p PASSWORD -h MYSQL.EXAMPLE.COM DATABASENAME;

    Ersetzen Sie die in Großbuchstaben geschriebenen Platzhalter (USER, PASSWORD, MYSQL.EXAMPLE.COM und DATABASENAME) durch Ihre spezifischen Datenbankanmeldeinformationen. Planen Sie dieses Skript als monatlichen Cron Job, um eine regelmäßige Wartung und Optimierung Ihrer MySQL-Tabellen sicherzustellen.

  3. Schritt 3: Tabellen reparieren anstelle der Optimierung (falls erforderlich)

    Um eine Tabelle zu reparieren, anstatt sie zu optimieren, führen Sie den folgenden Befehl aus:

    mysql -u username -ppassword -h hostname databasename -e "show tables" | grep -v Tables_in | grep -v "+" | gawk '{print "repair table " $1 ";"}' | mysql -u username -ppassword -h hostname databasename

    Ersetzen Sie die Platzhalter durch Ihre tatsächlichen Datenbankinformationen.