Als ik in phpmyadmin ga zien dan komt er bij 1 tabel (bezoekers) te staan dat er een overhead is van x kb.
Bestaat er een phpfunctie om te zien of er een overhead is en zoja welke functie is het en hoe kan ik hem best gebruiken.
Ik zoek namelijk een script dat als er overhead is deze door middel van de sqlfunctie
OPTIMIZE TABLE bezoekers
te optimaliseren
je kan optimize table altijd gebruiken, als het niet nodig is dan zal hij gewoon niets doen
waar je wel op moet letten is dat als er word geschreven naar de database dat de data corrupt kan raken
als je optimize table wil gebruiken doe dat dan op een moment dat er niemand online is en lock de tables van te voren
anders is het gewoon zelfmoord voor de database
aan elwin: ik begrijp niet echt wat je bedoeld, kan je misschien ff een voorbeeldje geven??
aan rick:
waar je wel op moet letten is dat als er word geschreven naar de database dat de data corrupt kan raken
als je optimize table wil gebruiken doe dat dan op een moment dat er niemand online is en lock de tables van te voren
anders is het gewoon zelfmoord voor de database
sorry, dit is chinees voor mij...
maar hoe kan die informatie dan corrupt worden, het is gewoon een ip adres en id nummer en een aanwezig veld...µ
Ik heb het nu gewoon op het einde van mijn pagina gezet dus het word altijd uitgevoerd maar je zei je moet het doen als er niemand online is
maar er kan tijdens het uitvoeren toch altijd iemand on komen??
Wat hij bedoelt te zeggen is dat je voorzichtig moet zijn wanneer met je de tabellen in je database bezig gaat..
Want als er iemand op je website komt die allemaal dingen doet die met de database tabellen te maken hebben, is er de kans dat er iets mis gaat (blijft klein maar is er wel) dat je tabellen 'fucked op' raken, aka 'corrupt' :)
Wat Elwin bedoelt, is dat wanneer je in PHPmyAdmin bent, dat je kunt zien hoeveel 'overhead' er zit op je tabel.. PHPmyAdmin is ook gewoon met PHP geschreven en voert ook een query uit om te kijken of een tabel overhead heeft of niet.. Dus wat Elwin dan beweert, is dat wanneer phpmyadmin het kan, dat jij het ook kunt, dmv een MySQL query..
Toevallig weet ik ook hoe je dit doet:
<?
SHOW TABLE STATUS LIKE 'tabel_naam';
?>
De kolom: 'Data_free' die je terug krijgt als resultaat geeft het aantal Bytes overhead aan..
oke bedankt bas; dan heb ik nog een vraagje: kan ik de volgende code zonder problemen uitvoeren?
<?php
// connectie
$res = mysql_query("SHOW TABLE STATUS LIKE 'bezoekers'");//om te testen: or die(mysql_error());
$row = mysql_fetch_array($res);
if ($row['Data_free'] > 0){
$optimize = mysql_query("OPTIMIZE TABLE `bezoekers`");//om te testen: or die(mysql_error());
if ($optimize){
print ("Er is een overhead van {$row['Data_free']} gedelete");
} else {
print ("Er is een error");
}
} else {
print ("Er is geen overhead");
}
?>
sickness: volgens mij heb je dan toch iet verkeerd gedaan of opeens veel rijen laten deleten hoor :p
Die code kun je uitvoeren zonder problemen ja :) Ik zou het gewoon testne.. denk dat het wel werkt, erg nice trouwens :) netjes gecode.. misschien ook leuk om dit scriptje te posten straks onder scripts..
ik probeer te zeggen dat als OPTIMIZE TABLE bezig is en er word data gewijzigd (zelfde stukje data op hetzelfde moment) dat je tabel beschadigd/corrupt zal raken
het kan zijn dat alleen de rij beschadigd is maar het kan ook zijn dat de hele tabel beschadigd (data komt door het opschuiven op een andere plaats te staan dan het eerst stond)
mysql is een leuke server maar heeft wat dit soort dingen betreft nog wel wat te leren van databases zoals oracle
iig zou ik optimize table NOOIT gebruiken op een tabel die actief gebruikt word op dat moment