Récupère la place perdue dans une BDD MySQL

En supprimant des données dans une table MySQL on se retrouve avec de la place perdue.

Dans phpMyAdmin, la liste des tables contient la colonne "Perte" qui indique la taille perdue. Ce script permet donc d'optimiser toutes les tables d'une base de données et de gagner un peu de place.

  Voir en MySQLi un code identique : Récupère en MySQLi la place perdue dans une BDD SQL


Information sur les mises à jour

Dernière mise à jour :

14 Sept 2019
fonctionnement du code vérifié

10 167  vues
Compatibilité du code
PHP 4, PHP 5
A savoir

Ces fonctions sont utilisées dans ce code source:
mysql_close()    mysql_connect()    mysql_error()    mysql_fetch_assoc()    mysql_query()    mysql_select_db()   

Ces extensions étaient obsolètes en PHP 5.5.0, et ont été supprimées en PHP 7.0.0.
à la place, vous pouvez utiliser l'extension MySQLi ou l'extension PDO_MySQL.
Voir aussi MySQL : choisir une API du guide et ces entrées de la FAQ pour plus d'informations.
Alternatives à cette fonction :
mysqli_connect() et PDO::__construct()

  code classé dans   MySQL
  code source classé dans   MySQL
 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
                    
<?php
/*------------------------------*/
/*
Titre : Récupère la place perdue dans une BDD MySQL

Auteur : forty
Website auteur : http://www.toplien.fr/
Date édition : 04 Nov 2008
Date mise a jour : 14 Sept 2019

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*------------------------------*/

$sql_serveur = "à  renseigner"; // Serveur mySQL
$sql_base = "à  renseigner"; // Base de données mySQL
$sql_login = "à  renseigner"; // Login de connection a mySQL
$sql_password = "à  renseigner"; // Mot de passe pour mySQL

$lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) or die(
@mysql_select_db($sql_base, $lk) or die(mysql_error());
?>
<html>
<head>
<title>Récupère la place perdu dans une base de données
MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//on prépare la requête
$sql = "OPTIMIZE TABLE ";
//on recherche toutes les données des tables
$req = mysql_query('SHOW TABLE STATUS', $lk);
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'].'`, ';
echo $data['Name'] . "<br>\n";
}
}
//on enlève le ', ' de trop
$sql = substr($sql, (strlen($sql)-2));
//et on optimise
mysql_query($sql, $lk);
?>
</body>
</html>
<?php
/*------------------------------*/
/*
Titre : Récupère la place perdue dans une BDD MySQL

Auteur : forty
Website auteur : http://www.toplien.fr/
Date édition : 04 Nov 2008
Date mise a jour : 14 Sept 2019

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*------------------------------*/

$sql_serveur = "à  renseigner"; // Serveur mySQL
$sql_base = "à  renseigner"; // Base de données mySQL
$sql_login = "à  renseigner"; // Login de connection a mySQL
$sql_password = "à  renseigner"; // Mot de passe pour mySQL

$lk = @mysql_connect($sql_serveur, $sql_login, $sql_password) or die(
@mysql_select_db($sql_base, $lk) or die(mysql_error());
?>
<html>
<head>
<title>Récupère la place perdu dans une base de données
MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//on prépare la requête
$sql = "OPTIMIZE TABLE ";
//on recherche toutes les données des tables
$req = mysql_query('SHOW TABLE STATUS', $lk);
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'].'`, ';
echo $data['Name'] . "<br>\n";
}
}
//on enlève le ', ' de trop
$sql = substr($sql, (strlen($sql)-2));
//et on optimise
mysql_query($sql, $lk);
?>
</body>
</html>

      Fonctions du code - Doc officielle PHP

   php.net  
Description
Versions PHP
    die
Alias de la fonction exit
PHP 4, 5, 7 et 8
    echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
    mysql_close Ferme la connexion MySQL - (PHP 4, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    mysql_connect Ouvre une connexion à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    mysql_error Retourne le texte associé avec l'erreur générée - (PHP 4, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    mysql_fetch_assoc Lit une ligne de résultat MySQL dans un tableau associatif - (PHP 4 >= 4.0.3, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    mysql_query Envoie une requête à un serveur MySQL - (PHP 4, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    mysql_select_db Sélectionne une base de données MySQL - (PHP 4, PHP 5, PECL mysql:1.0)   !  OBSOLèTE en PHP 5.5.0, supprimée en PHP 7.0.0
    strlen
Calcule la taille d'une chaîne
PHP 4, 5, 7 et 8
    substr
Retourne un segment de chaîne
PHP 4, 5, 7 et 8
Minimum 10 mots. Votre commentaire sera visible après validation.


 Autres snippets qui pourraient vous intéresser

Récupère en MySQLi la place perdue dans une BDD SQL

Compatibilité : PHP 7, PHP 8

Optimise toutes les tables d'une base de données et gagne de la place en récupérant la place perdue dans une base de données SQL.

Déplacer un fichier dans un autre répertoire

Compatibilité : PHP 5, PHP 7, PHP 8

Déplace un fichier avec la source et la cible en paramètre. La fonction renvoie 3 états d'erreurs en cas d'échec.

* Requêtes exécutées avec Recherche Contextuelle
avatar

Forty

  04 Nov 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

14 Sept 2019
fonctionnement du code vérifié

10 167 Vues
Compatibilité du code
PHP 4, PHP 5