Citat:
Ursprungligen postat av Clarence
Det är helt beroende på din specifika load. Det är sant att det gör mycket mindre nytta med buffer pool, men en hit mot QC är mycket snabbare än en hit mot buffer pool .. men är också mindre återanvändbar. Vid låg QC hitrate kan det också vara nära noll nytta eller till och med negativ inverkan att underhålla cachen för väldigt få hits.
I min mening gör man ibland-ofta bättre att stänga av den om man har en bra MVC-struktur och där har en bra cache-policy (du slår aldrig memcache prestandan med MySQL, bara auth drar mer än en fetch). Men den gör i princip alltid nytta om man inte har det eller också servar legacy kod.
Det lättaste sättet att veta hur din load hanterar det är att sätta upp en temporär server som du sedan kör playback av dina queries mot (med t ex percona playback) med QC av och på. Tänk på att du måste värma upp buffer poolen först för att få relevanta resultat!
|
Tack för bra svar!
Det bästa verkar alltså vara att i de flesta fall skippa QC helt och istället köra memcached eller redis för exakta matchar och att man alltid hämtar hela objekt/rader ur databasen (ORM-struktur) som man sedan lagrar i minnescachen?
Om man cachar alla objekt i minnet kommer man ju i princip aldrig köra samma query fler än en gång mot samma dataset vilket gör att QCn inte kommer vara effektiv vilket gör att det då är det bättre att stänga av den. Har jag förstått det rätt då?
Det är ju ganska logiskt egentligen.