MySql reorganisieren

Hallo an Alle,

für das Optimieren und Reorganieren von MySql-Datenbanken (InnoDB) habe ich im Netz folgenden Code gefunden. Könnt Ihr da mal drüber schauen, ob das wirklich das Richtige macht? Bin in PHP noch blutiger Anfänger und verstehe den Code nicht komplett. Danke schonmal für Eure Mühe!

<?php define('DB_USER', 'root'); // Ersetze usernamehere mit deinem MySQL-Datenbank-Benutzernamen.
define('DB\_PASSWORD', ''); // Ersetze yourpasswordhere mit deinem MySQL-Passwort. define('DB\_HOST', 'localhost'); // In 99% der Fälle musst du hier nichts ändern. Falls doch ersetze localhost mit der MySQL-Serveradresse. define('CheckForCorrupts',true); define('Optimize',true); // ab Hier nichts mehr ändern. $db = mysql\_connect(DB\_HOST,DB\_USER,DB\_PASSWORD) or die("Please check the Settings of the Database (User/Password/Host)"); $abfrage = mysql\_query("SHOW databases",$db); while ($databases = mysql\_fetch\_array($abfrage)) { $tot\_data = 0; $tot\_idx = 0; $tot\_all = 0; $result = mysql\_query("SHOW TABLE STATUS FROM `".$databases[0]."`",$db); if (mysql\_num\_rows($result) \>= '1'){ while ($row = mysql\_fetch\_array($result)) { $tot\_data = $row['Data\_length']; $tot\_idx = $row['Index\_length']; $total = $tot\_data + $tot\_idx; $total = $total / 1024 ; $total = round ($total,3); $total\_total += $total; $gain= $row['Data\_free']; $gain = $gain / 1024 ; $total\_gain += $gain; $gain = round ($gain,3); if (CheckForCorrupts == true) { mysql\_query("CHECK TABLE `".$row[0]."`",$db); mysql\_query("FLUSH TABLE `".$row[0]."`",$db); } if (Optimize == true) { mysql\_query("OPTIMIZE TABLE `".$row[0]."`",$db); } } } } echo "Size of all Databases: ".floor($total\_total/1024)." MB (Optimize "; if (Optimize == true) { echo "has saved "; } else { echo "could save "; } echo floor($total\_gain/1024)." MB)"; ?\> Gruß cozuhazu

Dieser Code macht nichts anderes als die Größe der Tabellen einer Datenbank zu zählen. Spezifiziert man dann noch Optimize wird der OPTIMIZE TABLE Befehl von MySQL ausgeführt. Der sorgt aber nur für für eine Defragmentierung der entsprechende Tabelle.
Wenn du wirklich deine Datenbank optimieren willst (sprich, schneller machen) solltest du dir lieber Gedanken über dein Tabellen-Design machen und wie du deine Querys verbessern kannst. Aber da solltest du dich schon etwas mehr mit SQL und Datenbankmodellierung beschäftigen…