Citat:
Ursprungligen postat av Clarence
Denormalisering är den enklaste och i särklass mest effektiva lösningen för att lösa många prestanda-problem som kommer av normaliserad välstrukturerad data. Vill du läsa mer om detta etablerade och välanvända koncept kan du börja här: http://en.wikipedia.org/wiki/Denormalization
Just p g a av att läslasten är så mycket högre än skrivlasten blir det ett väldigt effektivt verktyg. På ett forum kan du räkna med en ratio på iaf 100:1, även om det oftare hamnar närmare 1000:1.
Om du inte vet vad det innebär att läsa resultatet från en EXPLAIN på din query så har du inte en aning om din lösning faktiskt är effektiv efter MySQLs query plan. Om du kör den och läser på om betydelsen av resultatet så kan du lätt inse att din query är väldigt ineffektiv.
|
För att det över huvud taget ska vara intressant att diskutera denormalisering eller optimering som strider mot de grundläggande principerna för hur man bygger relationsdatabaser (exempelvis normalisering för unvikande av redundans) så måste man göra en kalkyl på vad den eventuella vinsten kan bli vid en genosnittlig belastning, i jämförelse med den tid det tar att utveckla denna förändring i form av mantid och kostnader. För att en optimering ska vara intressant så måste minst fyra minimikriterier vara uppfyllda (ibland behöver fler kritrier vara uppfyllda):
1 - Garanterad datakvalitet
2 - Det ska verkligen finnas ett upplevt behov dvs det måste föreligga ett kännbart prestandaproblem
3 - Den beräknade prestandavinsten ska vara avsevärd
4 - Kostnaden måste stå i rimlig proportion till den tidsvinst man beräknas göra
Jag ger mig aldrig in på optimering ur prestandasynpunkt om det inte finns ett verkligt behov av det, dvs om det är någon som upplever att systemet tar för lång tid att köra. Annars är det rent slöseri med arbetstid.