Get Adobe Flash player

Optimierung und Bereinigung der MySQL Datenbanken

Wie auch bei Festplatten des eigenen PC, können bei Datenbanken Fehler oder Fragmentierungen auftreten.

Auch wenn der grösste Performanceverlust meist bei falsch gesetzten Indexes liegt, so spielt die Optimierung der Tabellen auch eine kleine Rolle.

Aus diesem Grund habe ich ein einfaches PHP Skript gemacht:

<?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)";
?>

Dieses Script kann man per Cronjob oder auch manuell einmal im Monat aufrufen und sich automatisch alle Tables prüfen, reparieren und optimieren lassen. Da die Prüfung und Reparatur selten gebraucht wird, habe ich diese als einzelne Option zum Abschalten hinzugefügt.

Zerstören kann man sich damit nichts, da nur unnötiger Platz entfernt. Bei grossen Datenbanken lohnt sich diese Aktion über die Nacht auszuführen, da die Reorganisation bei mehreren Gigabyte grossen Datenbanken länger dauern könnte.

Benutzer, die diesen Beitrag fanden, suchten nach:

  • mysql db optimieren automatisch
  • mysql tabelle bereinigen
  • mysql optimieren windows
  • it bereinigung
  • mysql db aufräumen
Weitere interessante Beiträge:

1 Kommentar zu „Optimierung und Bereinigung der MySQL Datenbanken“

Kommentieren

This Blog will give regular Commentators DoFollow Status. Implemented from IT Blögg

eMail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Stefan
Kontaktdaten
IT Blögg?
Ein männlicher IT Nerd durchstöbert das Web nach speziellen Gadgets, unentbehrlicher Software und Alles was man im IT Sektor nicht verpassen darf.
Stichwörter Wolke