Ha hasznos lekérdezés cache

Azt nem mondhatjuk, hogy a lekérdezés cache automatikusan hatékonyabb, mint a hiányát. Gyorsítótárral időt vesz igénybe, így a nyereség a cache lehet beszerezni, ha a megtakarítások meghaladják a költségeket. És ez attól függ, hogy a szerver terhelés.

Elméletileg meghatározza a cache hasznos-e vagy sem, akkor összehasonlítani a munka mennyisége a szerver kell tennie, hogy engedélyezni és letiltani a gyorsítótárat. Ha a gyorsítótár ki van kapcsolva, a szerver végzi kéréseket írni és olvasni, az első esetben - még generál és visszaadja az eredményt. Ha a gyorsítótár engedélyezve van, amikor a feldolgozás minden olvasási kérés, akkor először ellenőrizze a cache, és ezután vissza a tárolt eredményt, vagy (ha ez nem a cache), hogy végre egy lekérdezést hoz eredményt a keresés, és küldje el az ügyfél. A feldolgozás minden kérést rögzíteni, akkor először végre kell hajtania, és ellenőrizze, hogy szükséges-e bejelenteni semmissé bejegyzések az gyorsítótárat.

Bár úgy néz ki, elég egyszerű, hogy pontosan megjósolni az előnyeit cache-nehéz. Meg kell venniük továbbá a külső tényezők. Például a lekérdezés cache csökkentheti a szükséges időt a kialakulását az eredmény, de nem azt az időt, hogy küldje el az ügyfél, azaz lehet, hogy a domináns tényező.

Az egyik legegyszerűbb módja, hogy megértsék, nem pénzbeli nyeremény - Nézd meg a cache találati arány. Ez azt mutatja, hogy hány kérelmet kézbesítették a cache, hanem végre a szerver a semmiből. Amikor a szerver megkapja SELECT, növeli a két állam változó: Qcache_hits vagy Com_select, attól függően, hogy a kérés már a gyorsítótárban, vagy sem. Ezért, a cache találati arány kiszámítása az alábbi képlet segítségével Qcache_hits / (Qcache_hits + Com_select).

Bármilyen SELECT lekérdezés, nem szolgált a gyorsítótárból az úgynevezett gyorsítótárhibákat. Nem esnek bele a cache lehet a következő okok miatt.

• Request megakadályozza caching, mint akár tartalmaz egy nem-determinisztikus struktúra (pl, CURRENT_DATE funkció), vagy azért, mert az eredmény meg túl nagy neniya megőrzi a gyorsítótárban. Mindkét esetben Qcache_not_cached változó értékét megnöveljük.

• A kiszolgáló nem látott ilyen kérelmet, így nem tudta a cache az eredmény.

• A lekérdezés eredménye már korábban cache, de a szerver törölte azt. Ez akkor fordulhat elő, mivel kevés a memória, annak a ténynek köszönhető, hogy valaki azt mondta, hogy a szerver távolítsa el a kérelmet a gyorsítótárból, vagy azért, mert a rekord már érvénytelen.

Ha ez a szám gyorsítótárhibákat nagy száma és a non-caching proxy lekérdezések nagyon kicsi, a jobb oldali a következő állítások.

• A cache még nem „warm up”, azaz a szerver nem volt ideje, hogy kitöltse a cache lekérdezés eredményét.

• A szerver mindig lát az kéri, hogy korábban nem találkoztak. Ha ez a szám ismétlődő kis lekérdezések, ez akkor is megtörténhet, ha a cache „warm up”.

• Túl gyakran gyorsítótárbejegyzések érvénytelenítik.

Felvétel érvénytelenné válhat miatt fragmentáció, az erőforrások hiánya vagy adat megváltozik. Ha vette a cache memóriája elegendő és konfigurált paraméter query_cache_min_res_unit rendesen, az érvénytelenítés a legtöbb változása miatt a tárolt értéket. Megtudja, hány kérés módosított adatokat, hogy az állapotváltozók Com_ * (Com_update, Com_delete, stb ...), és hogy hány kérelmet érvénytelennek nyilvánította, mivel kevés a memória - változó Qcache_lowmem_prunes.

Logikus, hogy fontolja meg a költségek érvénytelenítés elkülönítve a találati arány. Tételezzük fel például, hogy csak egy olvasási az asztalról, a találati arány 100%, és a másik - csak frissíti. Ha a találati arány számítják állapotváltozók, akkor 100% lesz. De még ebben az esetben a használata a cache nem lesz hatásos, mert lelassítja a frissítési kérelmeket. Amikor feldolgozó megújítási kérelem esetén ellenőrizni kell, hogy állapítsa semmis minden gyorsítótárban tárolt adatokat, hanem mert a válasz mindig „nem”, akkor az összes ezt a munkát végeztek, de hiába. Ezt a problémát nem lehet érzékelni, ha nem elemzik száma nem gyorsítótárazott lekérdezések együtt, és találati arány.

A szerver, amelyhez keveréke írási műveletek és olvasható cache ugyanabból a táblázatok egyensúlyban, nem mindig előnyös a jelenléte a lekérdezés cache. Az írási művelet teszi kéréseket a cache érvénytelenítés, mivel az olvasási művelet beilleszt egy új lekérdezést cache. A győzelem csak akkor lehet elérni, ha ezeket a kérdéseket, majd szolgált a gyorsítótárból.

Ha a tárolt eredmény érvénytelenné válik, mielőtt a szerver megkapja ismét ugyanazt a parancsot a SELECT, minden munkát a természetvédelmi már időpocsékolás és a memóriát. Ahhoz, hogy megértsük, hogy van egy ilyen helyzetben, az értékek összehasonlítására és Com_select Qcache_inserts változókat. Ha szinte az összes SELECT utasítás nem esnek bele a cache (ez növeli az értéket Com_select), amely után az eredmény halmazok cache, majd Qcache_inserts majd alig különböznek Com_select. És szeretnék Qcache_inserts érték lényegesen kisebb volt Com_select, legalábbis, miután a „meleg” cache.

Minden alkalmazás, van egy véges potenciális cache méretét, még távollétében írási műveleteket. A lehetséges méretét - az az összeg, tárolásához szükséges memória összes tárolt lekérdezések, amelyek az alkalmazás futtatásához. Elméletileg a legtöbb esetben ez a méret nagyon nagy. A gyakorlatban azonban sok alkalmazásnál ez sokkal kevesebb, mint várható lenne, annak a ténynek köszönhető, hogy a legtöbb bejegyzés csak a cache érvénytelenítik. Még ha ki egy csomó memória a lekérdezés cache, hogy soha nem lesz tele több, mint a potenciális méretét a gyorsítótárat.

Ügyelni kell arra, milyen százalékban memória juttatott a cache ténylegesen használják. Ha nem használja a memóriát, csökkenti a gyorsítótár méretének, ha hiánya miatt a memória gyakran az elmozdulás, - növelik azt. Azonban a túlzott gyorsítótár méretének - nem olyan rossz; annak a ténynek köszönhető, hogy a kiosztott valamivel több, vagy valamivel kevesebb memóriát igényel, mint a ténylegesen szükséges teljesítmény nem sok hatással. A probléma akkor keletkezik, ha nem használ sok memóriát vagy lekérdezéseket elmozdult a cache olyan gyakran, hogy minden caching hozza csak a veszteségeket.

Arra is szükség van, hogy az arány a méret cache kérések másik szerver cache, mint például medence pufferek vagy cache InnoDB MyISAM kulcsokat. Lehetetlen hez arány minden alkalommal, vagy bármely egyszerű képlet, mint megfelelő egyensúly függ az adott alkalmazás.

Kapcsolódó cikkek