06. januar 2004 - 15:47
Der er
21 kommentarer og 1 løsning
størrelse af table i mysql
hvordan kan man beregne størrelsen af indholdet i en table i MySQL??
Annonceindlæg fra gavdi
06. januar 2004 - 15:50
#1
har faktisk samme problem - lytter lige med, og/eller skriver hvis jeg finder en løsning (inspireret af phpMyAdmin) Morten
06. januar 2004 - 16:02
#2
størrelse... i pixels, bytes eller hvad?
06. januar 2004 - 16:11
#3
<? include ('connect.inc.php'); // Forbindelse til database $db = 'database'; // Database navn $str = "<h1>Database $db:</h1>"; $query ="SHOW TABLE STATUS FROM $db" ; $result = mysql_query($query) or die(mysql_error()); if (@mysql_num_rows($result)) { $samlet = 0; while ($row = mysql_fetch_array($result)) { $tabelnavn = $row['Name']; $data = $row['Data_length']; $index = $row['Index_length']; $ialt = number_format(($data+$index)/1024,2,',','.'); $samlet += $ialt; $str .= "$tabelnavn indeholder: $ialt kb </br>"; } $str .= "<b>Databasens samlede størrelse: $samlet kb</b>"; } // end if mysql_close($s); // spyt ud print $str; ?>
06. januar 2004 - 16:15
#4
Lidt pænere opstilling: <? include ('connect.inc.php'); // Forbindelse til database $db = 'sveegaard'; // Database navn $str = "<h1>Database $db:</h1>"; $str .= "<table>"; $query ="SHOW TABLE STATUS FROM $db" ; $result = mysql_query($query) or die(mysql_error()); if (@mysql_num_rows($result)) { $samlet = 0; while ($row = mysql_fetch_array($result)) { $tabelnavn = $row['Name']; $data = $row['Data_length']; $index = $row['Index_length']; $ialt = number_format(($data+$index)/1024,2,',','.'); $samlet += $ialt; $str .= "<tr><td>$tabelnavn indeholder: </td><td align='right'> $ialt kb</td></tr>"; } $str .= "<tr><td><b>Databasens samlede størrelse: </td><td align='right'> $samlet kb</b></td></tr>"; } // end if $str .= "</table>"; // spyt ud print $str; ?>
06. januar 2004 - 16:28
#5
Er det bare en tabel (Eller alle der fx starter med 'a') kan du bruge LIKE: $query ="SHOW TABLE STATUS FROM $db LIKE 'tabel_navn'" ; eller: $query ="SHOW TABLE STATUS FROM $db LIKE 'a%'" ;
06. januar 2004 - 16:55
#6
kan man ikke gøre det på en eller anden mere fiks måde... jeg skal kun have for en table, så jeg behøver jo ikke gå hele db'en igennem?
06. januar 2004 - 16:56
#7
WHERE table='noget' ???
06. januar 2004 - 17:01
#8
$query = "SHOW TABLE STATUS FROM $db WHERE table='tabel_navn'";
06. januar 2004 - 17:06
#9
Jo, som jeg skrev før: $query ="SHOW TABLE STATUS FROM $db LIKE 'tabel_navn'" ;
06. januar 2004 - 17:15
#10
ok.. fair nok... *gnider sig i øjnene for bedre at kunne se* haha... lav et svar :)
06. januar 2004 - 17:19
#11
c",)
06. januar 2004 - 18:21
#12
jeg oplever et problem... hvis nu jeg har haft noget i min table... og jeg så sletter noget i den... så bliver den ved med at fylde det samme??? hvad kan det være??
06. januar 2004 - 18:42
#13
Der er sikkert et overhead på din tabel. Prøv at bruge: OPTIMIZE TABLE `tabelnavn` og se om det hjælper.
06. januar 2004 - 18:53
#14
Fx: <? $database = 'navn'; // Database navn $tabel = "navn"; // Tabelnavn include ('db.php'); // Forbindelse til database $str = "<h2>Tabel $tabel:</h2>"; $query1 = "OPTIMIZE TABLE $tabel"; mysql_query($query1) or die(mysql_error()); $query2 = "SHOW TABLE STATUS FROM $database LIKE '$tabel'" ; $result = mysql_query($query2) or die(mysql_error()); if (@mysql_num_rows($result)) { while ($row = mysql_fetch_array($result)) { $tabelnavn = $row['Name']; $data = $row['Data_length']; $index = $row['Index_length']; $ialt = number_format(($data+$index)/1024,3,',','.'); $str .= "<p><b>indeholder: </td><td align='right'> $ialt kb</b></p>"; } } // end if // spyt ud print $str; ?>
06. januar 2004 - 19:09
#15
hej... jeg gør det på en lidt anden måde... men kan ikke få det til at virke?! mysql_connect($sql_host, $sql_user, $sql_pass); function sql_optimize($db, $table) { mysql_query("OPTIMIZE TABLE $db.$table"); } sql_optimize($db, 'table');
06. januar 2004 - 19:17
#16
Hvis tabellen hedder table, skal du nok bare rette denne linie: mysql_query("OPTIMIZE TABLE $db.".".$table");
06. januar 2004 - 19:19
#17
Eller: mysql_query("OPTIMIZE TABLE $db"."."."$table");
06. januar 2004 - 19:23
#18
detox -> ville selv foretrække mysql_query("OPTIMIZE TABLE " . $db ."." . $table); Morten
06. januar 2004 - 19:23
#19
Eller: mysql_query("OPTIMIZE TABLE ".$db.".".$table);
06. januar 2004 - 19:24
#20
Morten -> Sure, same time ;o)
06. januar 2004 - 19:55
#21
detox -> cool... ;)
06. januar 2004 - 20:16
#22
hmmm... det var fordi jeg havde sat min funktion før jeg slettede i tablen.. så den virkede fint nok.. tak for hjælpen :)
Vi tilbyder markedets bedste kurser inden for webudvikling