Archiv verlassen und diese Seite im Standarddesign anzeigen : Optimize ?
Hi!
Kann ich optimize nur für einzelne Tabellen anwenden oder auch für die ganze Datenbank?
Wäre ganz nützlich, wenn ich das ab und zu mal über die komplette db laufen lassen könnte....
Danke
Sascha
s.molinari
18.02.2002, 08:40
Hallo Sascha,
Nein "optimize" gilt nur für Tabellen. Du kannst aber mit
shell> myisamchk /path/to/database_dir/*.MYI (von www.mysql.com)
die ganze Datenbank überprüfen und optimieren. Dazu brauchst Du natürlich eine Telnet oder SSH Verbindung. "myisamchk" macht das gleiche wie "optimize". Du solltest auch ein Backup machen bevor Du sowas startest.;)
Scott
Hier hast Du mal ein Skript um Deine DB zu optimieren.
Es stammt von AA auf dem gEb ich habe es nur ein bisschen verändert und um Funktionen erweitert.
<?php
if (function_exists("set_time_limit")==1 and get_cfg_var("safe_mode")==0) {
set_time_limit(1200);
}
require("config.php");
$dbclassname="db_$dbservertype.php";
require($dbclassname);
$DB_site=new DB_Sql_vb;
$DB_site->appname="Database_check";
$DB_site->appshortname="checkDB";
$DB_site->database=$dbname;
$DB_site->server=$servername;
$DB_site->user=$dbusername;
$DB_site->password=$dbpassword;
$DB_site->connect();
adminlog2("DB-Optimierung","");
function adminlog2 ($extrainfo="",$userid=-1,$script="",$scriptaction="") {
global $DB_site,$bbuserid,$PHP_SELF,$action;
$userid=$bbuserid;
if ($script=="") {
$script=basename($PHP_SELF);
}
if ($scriptaction=="") {
$scriptaction=$action;
}
$DB_site->query("INSERT INTO adminlog (adminlogid,userid,dateline,script,action,extrainfo) VALUES (NULL,'$userid',".time().",'".addslashes($script)."','".addslashes($scriptaction)."','".addslashes($extrainfo)."')");
}
$result=$DB_site->query("show tables");
$result2=$DB_site->query("show tables");
$result3=$DB_site->query("show tables");
while ($rowa = mysql_fetch_array ($result3)) {
if($rowa[0]!="session"){
$blahc=$DB_site->query("analyze table $rowa[0]");
}
}
echo "Table Analyze ausgeführt!<br>";
mysql_free_result ($result3);
while ($rowc = mysql_fetch_array ($result)) {
if($rowc[0]!="session"){
$blahc=$DB_site->query("check table $rowc[0] EXTENDED");
}
}
echo "Table Check ausgeführt!<br>";
mysql_free_result ($result);
echo "<tt><table bgcolor=#c0c0c0 cellpadding=4 cellspacing=1 border=0 width=\"90%\" align=center><tr bgcolor=#ffff99><td width='40%' nowrap><tt><b>Table</b></tt></td><td width='60%' nowrap><tt><b>Msg_text</b></tt></td></tr>";
echo "</table></tt>";
while ($row = mysql_fetch_array ($result2)) {
if($row[0]!="session"){
$blah=$DB_site->query("optimize table $row[0]");
$baba = mysql_fetch_array($blah);
$color="#FFCC66";
if($baba[Msg_text]=="Keine Veränderung seit der letzten Optimierung"){ $color="#CCFF99"; };
if($baba[Msg_text]=="OK"){ $color="#CCFFCC"; };
echo "<table bgcolor=#c0c0c0 cellpadding=4 cellspacing=1 border=0 width=\"90%\" align=center>";
echo "<tr bgcolor='$color'><td width='40%' nowrap><tt>".$baba[Table]."</tt></td><td width='60%'><tt>".$baba[Msg_text]."</tt></td></tr>";
echo "</table></tt>";
flush();
}
}
mysql_free_result ($result2);
?>
Speichere dies einfach unter dboptimize.php in Deinem Adminverzeichniss ab und führe es aus.
mfg Znaper
Afterburner
21.07.2002, 20:06
put for testing
könnt ihr so ein teil nicht gleich in die version 3 miteinbauen !! ist nämlich eine gewaltige steigerung gewesem !!!
@Logo
Dies wird im vB3 enthalten sein :)
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.