Ottimizzare database MySql

Posted by ninjaweb on marzo 06, 2012
Tecnologia e Web

In linea generale, ottimizzare è sempre buona cosa. La regola vale anche per un database MySql, laddove tra una insert ed una delete, spesso ci si ritrova con una dimensione del database non consona agli effettivi dati ivi contenuti.

E’ buona norma infatti effettuare regolarmente l’ottimizzazione di tutte le tabelle: una volta entrati nel pannello phpmyadmin è sufficiente selezionare tutte le tabelle e scegliere dal menù Ottimizza Tabella per avere un database perfetto.

E’ però poco conveniente (oltrechè di difficile “ricordanza”) ogni volta accedere al pannello ed effettuare l’operazione.
Di conseguenza è bene creare un file con opportuno codice che ottimizzi le tabelle del nostro database, file che possiamo eseguire con un comando cron-jobs (oppure richiamare direttamente o includere in altre pagine php).
Di seguito il file php che dobbiamo creare:


<?php

// OTTIMIZZAZIONE DATABASE

$db_name = "nome_del_database";    // nome del database
$db_user = "username_del_database";    // utente database
$db_psw = "password";      // password utente database

$conn = mysql_connect("localhost", $db_user, $db_psw);
if (!$conn){
die("Errore: " . mysql_error());
}

mysql_select_db($db_name, $conn);

$SQL = "OPTIMIZE TABLE ";
$result = mysql_list_tables($db_name,$conn);
$i = 0;
while ($i < mysql_num_rows($result)) {
$name_table = mysql_table_name($result, $i);
$SQL .= $name_table;
$SQL .= ",";
$i++;
}
$SQL = substr($SQL,0,strlen($SQL)-1);
$qry = mysql_query($SQL, $conn);
mysql_free_result($qry);

mysql_close($conn);

// END OTTIMIZZAZIONE DATABASE

?>

A molti potrà sembrare un comportamento da programmatore ossessivo, ma posso garantire che così non è: recentemente ho avuto modo di visualizzare un database di un forum phpBB (che evidentemente non prevede al suo interno una procedura di ottimizzazione tabelle) che prima dell’ottimizzazione “pesava” 19 Mb.
Una volta ottimizzato, la dimensione è passata a… 1,5 Mb!

Comments are closed.