Optimierung aller MySQL Tablellen

Aus wiki.shutdown-system.de
Wechseln zu: Navigation, Suche

Da ich ziemlich viele fragmentierte Tabellen habe und nicht immer jede Tabelle einzeln optimieren will, habe ich mir ein kleines Script geschrieben, dass das alles automatisch passiert.

Es wird jede Datenbank und deren Tabellen ausgewählt und ein "OPTIMIZE TABLE" ausgeführt.

Hier mal mein kleines Script:

  #!/bin/bash
 
  SERVER="localhost"
 
  echo "---- OPTIMIZE TABLE on $SERVER ----"
  echo
  echo -n "MySQL User: "
  read USER
  stty -echo
  read -p "MySQL Password: " PASS; echo
  stty echo
 
  for i in `echo "show databases;" | mysql -u $USER -p --password=$PASS | grep -v "Database" | grep -v "information_schema"`
  do      
          echo "Using Database $i"
          echo
          for j in `echo "show tables;" | mysql -u $USER -p --password=$PASS $i | grep -v "Tables_in_$i"`
          do      
                  echo "Optimize table $j from Database $i"
                  echo "OPTIMIZE TABLE $j;" | mysql -u $USER -p --password=$PASS $i
                  echo "Done!"
                  echo
          done
          echo
  done

$SERVER kann man ja auch noch einbinden :)


Meine Werkzeuge