Kom ihåg mig?
Home Menu

Menu


MySQL Query cache med InnoDB. Bra eller dåligt?

 
Ämnesverktyg Visningsalternativ
Oläst 2013-10-07, 09:13 #1
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
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!
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-10-07, 16:25 #2
pelmereds avatar
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2010
Inlägg: 1 342
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
pelmereds avatar
 
Reg.datum: May 2010
Inlägg: 1 342
Citat:
Ursprungligen postat av Clarence Visa inlägg
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.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:46.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017