Extra Blog

Mysql Tabellenoptimierung

Auch Mysql will regelmässig optimiert werden. Insbesondere bei Tabellen mit vielen Löschtransaktionen wachsen die Überhänge gerne an.

Faul wie ich nunmal bin, wird auch dieses regelmässig automatisiert angegenangen. Insbesondere auf Hostingumgebungen verliert man schnell den Überblick welche Tabellen man mal wieder optimieren sollte.

Ein Einzeiler genügt i.d.R. hierfür aus.

echo "select concat('optimize table \`', table_schema,'\`.\`', table_name,'\`;') from information_schema.tables where table_schema not in ('information_schema', 'mysql')" | mysql -u root -N | mysql -u root

Das geht bestimmt auch noch viel besser. Z.B. eine Routine, die nur die Tabellen optimiert, die es nötig haben. Für den faulen Admin wie mich reichts jedoch aus.

Noch keine Kommentare

  • ThorstenS  
    Ich machs so:

    CODE:
    nice -n -10 mysqlcheck --analyze --check --auto-repair --extend --optimize --all-databases -uroot


    /thorsten

    P.S. Deine Captchas sind übelst zu lesen :-/
    #1
    • Matthias  
      Da hast Du vollkommen Recht. Das ist die schönere Variante.

      Obiges Script kann ich leicht anpassen und Exlcude Regeln hinzufügen und lässt sich dann auch für weitere Tabellen orientierte Jobs / Tasks nutzen. Letztendlich macht mysqlcheck auch nichts anderes.
      Und wer die Abfrage verstanden hat, kann es auch einfach in eine z.B. Webanwendung einbauen.

      Mir ist wichtig, dass man versteht, was im Hintergrund passiert und wofür z.B. das information_schema genutzt werden kann. Und nicht jeder Hostingkunde kann auf Tools wie mysqlcheck etc. zugreifen und muss sich ggf. entsprechend anders behelfen.

      Trotzdem Danke für den Hint.

      -> Captcha ist entfernt.

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.