michabbb
2/24/2015 - 12:56 AM

Defrag all Tables

Defrag all Tables

#!/bin/bash

#echo -n "MySQL username: " ; read username
#echo -n "MySQL password: " ; stty -echo ; read password ; stty echo ; echo

mysql -NBe "SHOW DATABASES;" | grep -v 'lost+found' | while read database ; do
mysql -NBe "SHOW TABLE STATUS;" $database | while read name engine version rowformat rows avgrowlength datalength maxdatalength indexlength datafree autoincrement createtime updatetime checktime collation checksum createoptions comment ; do
  if [ "$datafree" -gt 0 ] ; then
   fragmentation=$(($datafree * 100 / $datalength))
   echo "$database.$name is $fragmentation% fragmented."
   mysql -NBe "OPTIMIZE TABLE $name;" "$database"
  fi
done