Script optimizare baza de date

In acest articol voi posta un script pentru optimizarea bazei de de date.
Optimizarea unei baze de date se realizeaza defapt prin defragmentarea ei, fiind necesar sa fie facuta din cand in cand.
Conectarea la baza se face prin mysqli, iardaca nu e realizata, se poate face prin linia urmatoare:
$xyz=@new mysqli($dbhost,$dbuser,$dbpass,$dbname);
Astfel variabila pentru interogari este $xyz.

Apoi se copiaza urmatorul cod intr-un fisier php:
//Inceput cod:
//Definirea matricei pentru tabele
$tables=array();
//Afisarea statusului tabelelor existente in baza de date inainte de optimizare
$result=$xyz->query('SHOW TABLE STATUS');
//Traversarea tabelelor existente
while($row=$result->fetch_assoc())
{
//Afla dimensiunea inainte de optimizare, dimensiune pe care o imparte in MB
$table_size=($row['Data_length']+$row['Index_length'])/1024;
$tables[$row['Name']]=sprintf('%.2f',$table_size);
$total_size+=round($table_size,2);
//Optimizeaza tabela
$xyz->query('OPTIMIZE TABLE '.$row['Name']);
}
//Definirea matricei pentru tabelele optimizate
$optimised_tables=array();
//Afisarea statusului tabelelor existente in baza de date dupa optimizare
$result=$xyz->query('SHOW TABLE STATUS');
//Traversarea tabelelor existente
while($row=$result->fetch_assoc())
{
//Afla dimensiunea dupa optimizare, dimensiune pe care o imparte in MB
$table_size=($row['Data_length']+$row['Index_length'])/1024;
$optimised_tables[$row['Name']]=sprintf('%.2f',$table_size);
$optimise_total_size+=round($table_size,2);
}
//Afiseaza headul tabelului care afiseaza rezultatele
echo'<table width="600" border="1">
<thead>
<tr><th>Tabel</th><th>Dimensiune (KB)</th><th>Dimensiune dupa optimizare (KB)</th><th>Dimensiune optimizata</th></tr>
</thead>
<tbody>
';
//Parcurge tabelele existente pentru afisarea rezultatelor
foreach($tables AS $table=>$size)
{
//Afiseaza rezultatele intr-un rand
echo'<tr><td>'.$table.'</td><td>'.$size.'</td><td>'.$optimised_tables[$table].'</td><td>';
//Verifica daca tabela optimizata e mai mica dupa optimizare, iar daca e, ii seteaza dimensiunea optimizata
if($size>$optimised_tables[$table])
echo$size-$optimised_tables[$table];
//Inchide linia
echo'</td></tr>
';
}
//Adauga randul final, rand in care sunt setate totalul rezultatelor inainte si dupa optimizare, apoi inchide tabelul
echo'<tr><td><b>Total</b></td><td><b>'.$total_size.'</b></td><td><b>'.$optimise_total_size.'</b></td><td><b>'.round($total_size-$optimise_total_size,2).'</b></td></tr>
</tbody>
</table>';
//Inchide conexiunea la baza de date
$xyz->close();
//Sfarsit cod.

Lasă un răspuns