#!/usr/bin/perl -W # # MySQL OPTIMIZE cron script by Jakub Wartak ( vnull@pcnet.com.pl ) # v0x02 - 28.09.2004 # # ChangeLog: # 0x02(22.08.2006): # michal _at_ jagiellonka dot eu dot org reported that this script # doesn't play well with mysql-5.x, hopefully fixed. # # use DBI; use strict; my $sql_server = "localhost"; my $sql_login = "root"; my $sql_pw = ""; my $verbose = 0; my $db; $db = DBI->connect("DBI:mysql::$sql_server", $sql_login, $sql_pw) or die $db->errstr; my $q_listDB = $db->prepare("SHOW DATABASES") or $db->errstr; $q_listDB->execute or $db->errstr; while(my $name = $q_listDB->fetchrow_array) { # 0x02, not tested! next if ($name eq "INFORMATION_SCHEMA"); print "$name\n" if($verbose); $db->do("USE $name") or $db->errstr; my $q_listTables = $db->prepare("SHOW TABLES") or $db->errstr; $q_listTables->execute or $db->errstr; while(my $table = $q_listTables->fetchrow_array) { $db->do("OPTIMIZE TABLE $table"); $db->do("ANALYZE TABLE $table"); print "\t+ $table\n" if($verbose); } print "\n" if($verbose); } $q_listDB->finish; $db->do("FLUSH TABLES"); #$db->do("FLUSH LOGS"); $db->disconnect; exit 0;