Ik ben op dit moment bezig met het coden van 1 van de grootste projecten van mezelf tot nu toe. Het gaat om community site's, zoals http://www.apeldoorner.com. Deze draaien op dit moment op een systeem wat niet langer kan. Met ongeveer 1000 gebruikers online krijgt de database het behoorlijk zwaar en valt de site geregeld uit.
Ik ben begonnen met de database structuur, maar nu zit ik met een probleem hoe ik het beste de leden tabellen kan maken. Op het profiel kan aardig wat info ingevuld worden, maar moet ik dat allemaal in 1 tabel stoppen, of is het beter om het in meerdere kleine tabellen te stoppen?
Dus eigenlijk is mijn vraag: wat is in dit geval beter? Alles in 1 tabel stoppen en met 1 query er uit halen, of alles in veel tabellen stoppen en het er met meerdere query's en/of joins uit halen?
Hoppa! Daar heb je een probleem. Nu kan de server niet de complete database in het geheugen zetten. Hierdoor krijg je veel verkeer met de schijven, zijn gelukkig wel snel, maar die worden zo te zien ook weer gedeeld met het OS en andere systemen die op de server draaien. De verschillende onderdelen zitten elkaar dus in de weg.
Ps. Die 20 Gb, is dat per database of zijn dat meerdere databases?
Ok, dan is er in elk geval voldoende RAM aanwezig. Of dat ook wordt gebruikt, dat zul je wel moeten uitzoeken. Duik eens in de configuratie van MySQL en de algemene configuratie van de server. Er zijn ongetwijfeld honderden zaken die je kunt optimaliseren, maar soms verbeter je aan de ene kant iets en valt er aan de andere kant iets om. Daar zul je wel voor moeten oppassen.
Wil je dit goed doen, zul je echt een MySQL-dba nodig hebben. Ik kan je daar niet bij helpen, daarvoor heb ik onvoldoende MySQL-kennis in huis.
Heb je al uitgezocht wat nu precies de pijnpunten zijn? Dus welke queries in welke scripts problemen opleveren. En kun je nergens cachen? Zelfs al cache je maar 1 minuut, dat scheelt al duizenden queries per uur.