Zit met een porbleem dat mijn mysql database traag lijkt te reageren.
Het is lastig te reproduceren omdat het niet constant is.
Ik denk nu te hebben achterhaald wanneer de traagheid optreed;
De database betreft een forum, wanneer iemand bijvoorbeeld een reactie heeft geplaatst in een topic en daarna de forum-pagina opvraagt duurt het erg lang voordat de pagina is geladen.
Probeer de trage query te identificeren en ga ermee testen, explains maken. Het kan bijvoorbeeld traag worden door overmatige full-table scans op grote tabellen. Inefficiente query's moet je onderzoeken en optimaliseren. Ook als het druk is op je website is een prima performance van je database mogelijk maar dan wel met efficiente sql.
Probeer de trage query te identificeren en ga ermee testen, explains maken. Het kan bijvoorbeeld traag worden door overmatige full-table scans op grote tabellen. Inefficiente query's moet je onderzoeken en optimaliseren. Ook als het druk is op je website is een prima performance van je database mogelijk maar dan wel met efficiente sql.
Zoeken in je php code, daar waar iemand bijvoorbeeld een reactie heeft geplaatst in een topic en daarna de forum-pagina opvraagt. Vaak veel zoekwerk en query's los proberen. Is niet 1-2-3 even een oplossing voor te noemen.
Je kan in MySQL instellen dat hij queries die langer dan een x aantal seconden logt. Deze logs kan je vervolgens weer gebruiken om de langzame queries op te sporen. Vaak zijn het de queries die je niet verwacht die heel traag kunnen zijn.
Een goede manier om een query te analyseren is door EXPLAIN te gebruiken. Hiermee krijg je precies te zien wat een query doet. Of er indices gebruikt worden en hoeveel records er gelezen moeten worden voor een query.
Een laatste stap om te controleren is hoeveel queries er op een pagina uitgevoerd worden. Het kan best zijn dat je heel efficiënte queries hebt, maar als je er heel erg veel uitvoert, zal het toch heel traag kunnen worden.
Als aanvulling op Mark:
Veel queries op een pagina kunnen komen doordat er queries in een loop worden uitgevoerd. Zo lijkt het in eerste instantie niet veel; maar worden het er eigenlijk steeds meer.
Op een index van een forum kan ik me deze situatie zomaar voorstellen: ophalen alle categorieën, daarvan laatste topic(s), daarvan laatste reactie en/of de gebruiker; zulke loops.