Nous allons voir ici ce qu’est l’optimisation d’une BDD Mysql (MyISAM). Je vous fourni même a la fin, un petit bout de code en php pour réaliser cette optimisation régulierement.. :)
Le type de table par défaut de MySQL est MyISAM (Table non transactionnelle: une base de type non transactionnelle lorsqu’une erreur se produit, exécute tout ce qui se trouvait avant l’erreur a l’inverse de la table transactionnelle). Un système très performant, oui, mais qui laisse parfois a désirer quand a la fragmentation – il lui arrive de laisser trainer des morceaux a droite et a gauche. Oui, ils sont infimes et peut nombreux.. n’empêche qu’a force de requêtes (suppression, modification …), il reste des fois des « débris » de donnée qui trainent par ci par là dans la table.
Il faut donc ranger tout ça parfois ! Inutile de le faire tous les jours, sauf bien sur si votre site a un trafic incroyablement développé.. Personnellement je l’effectue toutes les semaines.
Bêtement en executant cette instruction mysql:
> OPTIMIZE TABLE `unetable`, `uneautretable`
La je suppose que vous vous demandez combien de temps cela va prendre de taper les instructions pour vos 30 tables.. j’ai eu la même réaction. Voici donc, pour vous mon script d’optimisation en php:
$link = mysql_connect('localhost', 'root', 'motdepasse');
?>
Selectionnez la base a optimiser:
if(isset($_POST["base"]))
{
$table = mysql_list_tables($_POST["base"]);
//on prépare la requête
$sql = "OPTIMIZE TABLE ";
//on recherche toutes les données des tables
$req = mysql_query('SHOW TABLE STATUS');
while($data = mysql_fetch_assoc($req))
{
//on regarde seulement les tables qui affichent des pertes
if($data['Data_free'] > 0)
{
//et on l'inclut si elle comporte des pertes
$sql .= '`'.$data['Name'].'`, ';
}
}
//on enlève le ', ' de trop
$sql = substr($sql, 0, (strlen($sql)-2));
//et on optimise
mysql_query($sql);
echo 'Optimisation de '.$_POST["base"].' terminée..';
mysql_close();
}
?>
Bonne optimisation ;)
Possibly Related Posts:
- Serveur HTTP Python en une ligne..
- HackThisSite.org Basic Howto: 1 à 10
- Activer Apache2/Php5 sous Mac Os X 10.5











