MySQL Tabellen-Overhead

Dennis Wronka

Soulcollector
Hi Leute,
ich steh jetzt auch mal wieder vor einer Huerde und bin mal gespannt und voller Hoffnung auf eine Loesung.

Ich versuche mittels PHP den Overhead einer Tabelle zu bestimmen, hab jedoch keinen Plan wie.
In PHPMyAdmin wird der angezeigt, also muss es wohl gehen. Ein Blick in die Scripts von PHPMyAdmin hat mir leider nicht weitergeholfen.

Ich hoffe, dass das ueber mysql_query geht, denn ansonsten bin ich wohl im falschen Forum.
Sollte das der Fall sein entschuldige ich mich und bitte darum den Thread zu verschieben.

Also, welche Query muss ich senden?
CHECK und ANALYZE haben nichts gebracht, und in den Dokus zu MySQL und PHP konnte ich auch nichts finden.

Vielen Dank schonmal.
 
Nachdem ich mich nochmal intensiv durch den Code von PHPMyAdmin gewuehlt habe hab ich die Loesung gefunden.

Die Abfrage lautet SHOW TABLE STATUS LIKE tabelle
Im Feld Data_free steht dann der Overhead.

Folgendes Script prueft die Tabellen in einer Datenbank und optimiert wenn Overhead vorhanden ist.
PHP:
<?php
$host="host";
$user="user";
$password="password";
$database="database";

$db=mysql_connect($host,$user,$password);
mysql_select_db($database,$db);
$tables=mysql_query("show tables",$db);
while ($table=mysql_fetch_row($tables))
 {
  $results=mysql_query("show table status like '$table[0]'",$db);
  while ($result=mysql_fetch_assoc($results))
   {
    if ($result["Data_free"]!=0)
     {
      mysql_query("optimize table $table[0]",$db);
     }  
   }
 }
$db=mysql_close($db);
?>
 
Zurück