Avatar billede supermand69 Nybegynder
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??
Avatar billede fangel Nybegynder
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
Avatar billede sone Nybegynder
06. januar 2004 - 16:02 #2
størrelse... i pixels, bytes eller hvad?
Avatar billede detox Nybegynder
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;
?>
Avatar billede detox Nybegynder
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;
?>
Avatar billede detox Nybegynder
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%'" ;
Avatar billede supermand69 Nybegynder
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?
Avatar billede supermand69 Nybegynder
06. januar 2004 - 16:56 #7
WHERE table='noget'

???
Avatar billede supermand69 Nybegynder
06. januar 2004 - 17:01 #8
$query = "SHOW TABLE STATUS FROM $db WHERE table='tabel_navn'";
Avatar billede detox Nybegynder
06. januar 2004 - 17:06 #9
Jo, som jeg skrev før:
$query ="SHOW TABLE STATUS FROM $db LIKE 'tabel_navn'" ;
Avatar billede supermand69 Nybegynder
06. januar 2004 - 17:15 #10
ok.. fair nok... *gnider sig i øjnene for bedre at kunne se*

haha...

lav et svar :)
Avatar billede detox Nybegynder
06. januar 2004 - 17:19 #11
c",)
Avatar billede supermand69 Nybegynder
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??
Avatar billede detox Nybegynder
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.
Avatar billede detox Nybegynder
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;
?>
Avatar billede supermand69 Nybegynder
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');
Avatar billede detox Nybegynder
06. januar 2004 - 19:17 #16
Hvis tabellen hedder table, skal du nok bare rette denne linie:

    mysql_query("OPTIMIZE TABLE $db.".".$table");
Avatar billede detox Nybegynder
06. januar 2004 - 19:19 #17
Eller:
mysql_query("OPTIMIZE TABLE $db"."."."$table");
Avatar billede fangel Nybegynder
06. januar 2004 - 19:23 #18
detox -> ville selv foretrække

mysql_query("OPTIMIZE TABLE " . $db ."." . $table);

Morten
Avatar billede detox Nybegynder
06. januar 2004 - 19:23 #19
Eller:
mysql_query("OPTIMIZE TABLE ".$db.".".$table);
Avatar billede detox Nybegynder
06. januar 2004 - 19:24 #20
Morten -> Sure, same time ;o)
Avatar billede fangel Nybegynder
06. januar 2004 - 19:55 #21
detox -> cool... ;)
Avatar billede supermand69 Nybegynder
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 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester