Archiwa kategorii: MySQL

Optymalizacja i defragmentacja baz danych mysql

Skrypt shella na debiana, gdzie dzięki „–defaults-file=/etc/mysql/debian.cnf” nie musimy wpisywać hasła przy każdym wykonaniu komendy mysql:

#!/bin/bash
for i in `mysql --defaults-file=/etc/mysql/debian.cnf -e 'select concat(table_schema,".",table_name) from information_schema.tables where engine="MyISAM"'`; do 
echo $i
mysql --defaults-file=/etc/mysql/debian.cnf -e "optimize table $i"; 
done

for i in `mysql --defaults-file=/etc/mysql/debian.cnf -e 'select concat(table_schema,".",table_name) from information_schema.tables where engine="InnoDB"'`; do 
echo $i
mysql --defaults-file=/etc/mysql/debian.cnf -e "ALTER TABLE $i ENGINE=INNODB"; 
done

Możemy go dodać do cron np. raz na tydzień w celu optymalizacji działania bazy danych. Trzeba jednak zaznaczyć, że powyższa optymalizacja i defragmentacja może prowadzić do wzrostu wielkości pliku /var/lib/mysql/ibdata1, gdyż dane są przenoszone na koniec zachowując ciągłość, ale pozostawiając puste dziury w tym pliku.