Скрипт оптимизации/починки базы данных

Главные вкладки

Аватар пользователя E-Will E-Will 4 февраля 2009 в 14:13

После переноса сайта на хостинг стали появляться ошибки/варнинги типа "Duplicate entry...". Не критично, но неприятно.
Вот простой скрипт, который быстро и просто чинит таблицы и оптимизирует их. Рекомендуется к регулярному запуску.

#!/usr/bin/perl -w
use strict;
use Time::HiRes;

my $database    =   "";
my $hostname    =   "localhost";
my $port        =   "3306";
my $user        =   "";
my $password    =   "";

use DBI;
my $dbh = DBI->connect("DBI:mysql:$database:$hostname:$port", $user, $password);

# Repair and optimize each table
foreach my $table ($dbh->tables) {
    my $t0 =Time::HiRes::time() ;
    unless ($dbh->do("REPAIR TABLE $table")) {
        print "Skipped:  $table\n";
        next;
    };
    if ($dbh->do("OPTIMIZE TABLE $table")) {
        my $t1 = Time::HiRes::time();
        my $delta=$t1 - $t0;
        print "[$delta]\tRepaired/Optimized: $table\n";
    }
}

# Close the database connection
$dbh->disconnect;
   

ВложениеРазмер
Иконка простого текстового файла optimize_base.pl.txt711 байт

Комментарии

Аватар пользователя E-Will E-Will 5 февраля 2009 в 12:01

theСанитар wrote:
"Если программист, решая какую-то проблему, решает использовать Perl, то это значит, что у него две проблемы"...

Интересная точка зрения Smile Можно было бы и снипет сделать, конечно для дру, но у меня сайты на разных двигах. А перл - один из удобнейших языков, imho