PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Optimize ?


Sascha.
17.02.2002, 23:42
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

Znaper
18.02.2002, 18:20
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

Logo
18.09.2002, 18:37
könnt ihr so ein teil nicht gleich in die version 3 miteinbauen !! ist nämlich eine gewaltige steigerung gewesem !!!

Mystics
18.09.2002, 19:51
@Logo

Dies wird im vB3 enthalten sein :)