Ik ben bezig met de ontwikkeling van een gecombineerd forum-systeem. We spreken hier over een forum dat op heel veel sites tegelijk gedraaid kan worden en over 1 gezamelijk database beschikt.
Ik heb al ruime ervaring met normalisatie, optimalisatie, etc. Maar ik was benieuwd naar wat jullie voor tips hebben voor grote databases. Wat is verstandig qua performance en wat niet? Ik ben als de dood voor tablelocks waar, bijvoorbeeld, GoT ook door getijsterd wordt op momenten. Als ik normaliseer zou ik bijvoorbeeld alle posts in een tabel zetten en die koppelen aan een topics tabel. Vervolgens trek ik per topic alle gerelateerde posts uit de tabel en bepaal (voor een overzicht van topics) wat de datum van de laatste post is en wie die gepost heeft. Ook de topicstarter is dan interessant. Het probleem is dat dit steeds op run-time uitgevoerd wordt terwijl ik in feite best 4 redundante kolommen kan opnemen in de topicstabel waarin respect. de ID van de starter, de datum van de starter, de ID van de laatste poster en de datum van de laatste update staan. Dit is natuurlijk sneller, maar ook redundanter en daarnaast ben ik bang voor een grote hoeveelheid locks op de topics tabel omdat bij iedere post ook deze tabel (naast de posts-tabel) ge-update dient te worden.
Ik maak overigens gebruik van SQL Server 2000 Enterprise (zoals in de topic titel).
Ik heb al ruime ervaring met normalisatie, optimalisatie, etc. Maar ik was benieuwd naar wat jullie voor tips hebben voor grote databases. Wat is verstandig qua performance en wat niet? Ik ben als de dood voor tablelocks waar, bijvoorbeeld, GoT ook door getijsterd wordt op momenten. Als ik normaliseer zou ik bijvoorbeeld alle posts in een tabel zetten en die koppelen aan een topics tabel. Vervolgens trek ik per topic alle gerelateerde posts uit de tabel en bepaal (voor een overzicht van topics) wat de datum van de laatste post is en wie die gepost heeft. Ook de topicstarter is dan interessant. Het probleem is dat dit steeds op run-time uitgevoerd wordt terwijl ik in feite best 4 redundante kolommen kan opnemen in de topicstabel waarin respect. de ID van de starter, de datum van de starter, de ID van de laatste poster en de datum van de laatste update staan. Dit is natuurlijk sneller, maar ook redundanter en daarnaast ben ik bang voor een grote hoeveelheid locks op de topics tabel omdat bij iedere post ook deze tabel (naast de posts-tabel) ge-update dient te worden.
Ik maak overigens gebruik van SQL Server 2000 Enterprise (zoals in de topic titel).