Optimize tabel

  • In mijn cron vond ik het volgende


    PHP
    //Optimize Updates  
        mysql_query("OPTIMIZE TABLE `clans`");
        mysql_query("OPTIMIZE TABLE `logs`");
        mysql_query("OPTIMIZE TABLE `temp`");
        mysql_query("OPTIMIZE TABLE `users`");					
    						
    	}


    Ik heb wat informatie proberen te vinden maar snap niet goed wat er hier gebeurt. Worden de tabellen hier opgeschoond?


    Verder zou ik graag willen weten of het nodig is om deze regels per dag uit te voeren


    Ik heb namelijk ook het volgende gevonden


    PHP
    $res = mysql_query('
    	  SHOW TABLE STATUS WHERE Data_free / Data_length > 0.1 AND Data_free > 102400
    	');
    	
    	while($row = mysql_fetch_assoc($res)) {
    	  mysql_query('OPTIMIZE TABLE ' . $row['Name']);
    	}


    Is dit wellicht een betere optie? En zo ja, hoe krijg ik de bovenstaande tabellen hierin verwerkt?

  • Bedankt. Deze had ik idd ook gelezen (onder andere) maar snap het niet helemaal. Er staat dat de ruimte wordt geoptimaliseerd. Houdt dit in dat er belangrijke dingen worden verwijderd of dat 'onzichtbare' ophopingen verdwijnen?


    Verder, welke van de script opties is aan te raden en het best in de cron te implementeren?

  • Het heeft zeker wel nut op de langere termijn, dus per dag is te veel van het goede. Ik zou het in de maandelijkse cron zetten.


    Welke beter is zou ik niet weten.


    EDIT: Volgens mij kun je het een beetje vergelijken met defragmenteren in Windows.

  • Ik durf het niet met zekerheid te zeggen, maar de werking is denk ik als volgt. Stel je hebt de volgende tabel.


    PHP
    id	naam	info
    1	Henk	Henk is echt stoer
    2	Ali	Ali is echt tuig
    3	Wouter	Wouter is stiekem best wel moe
    4	Barry	Baar heeft gewoon een rot naam


    Stel, je verwijderd nu Wouter uit de tabel. Dan komt deze er vervolgens zo uit te zien.


    PHP
    id	naam	info
    1	Henk	Henk is echt stoer
    2	Ali	Ali is echt tuig
    
    
    4	Barry	Baar heeft gewoon een rot naam


    De rij bestaat nog wel, maar wordt niet meer gelezen. Wanneer je de boel optimalizeert, worden deze 'niet gebruikte' plaatsen dus opgevuld. Het is inderdaad dus niet zoiets als defragmenteren. Al zet defragmentatie de boel ook weer op volgorde, ik weet niet of optimalisatie van MySQL dat ook doet.


    Het is zeker verstandig alle tabellen zo nu en dan te optimaliseren. Geen zware query vaak, maar kan veel schelen (preformance en data).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!