Configurarea MySQL interogare cache

Folosind interogări de memorare în cache, acesta este unul dintre factorii cheie care afectează productivitatea MySQL. Funcționalitate Solicitare Cache oferă oportunități suplimentare pentru a optimiza baza de date, și poate reduce timpul de mai multe ori procesarea interogărilor. Cea mai bună performanță generală de interogare Cache prezinta pe servere Web care au tabele nu se schimba foarte des, și o mulțime de interogări identice.

Potrivit pentru o interogare SELECT, MySQL salvează automat textul interogării și a prelua datele din memoria cache. Toate cererile identice în viitor, vor fi procesate de ocolind baza de date folosind funcția de interogare MySQL Cache. Astfel, cererile stocate în memoria cache nu sunt efectuate deloc.

Pentru operarea în valoare variabilă Query Cache query_cache_type ar trebui să fie stabilite sau la cerere, și query_cache_size să fie nenul.

În caz contrar, trebuie să adăugați setările corespunzătoare în [mysqld] fișierul de configurare secțiunea MySQL:

Pentru setarea variabilelor de lucru funcția de interogare cache-ul sistemului se intalnesc incepand cu „query_cache_“.

query_cache_limit - dimensiunea maximă a probei, care va fi scris în cache. Valoarea trebuie să specificați dimensiunea maximă a cea mai grea interogare, dar nu supra-umfla valoarea acestui parametru.
query_cache_min_res_unit - dimensiunea minimă a blocului de memorie alocată pentru a stoca rezultatele unei interogări în cache. Pentru a scrie date în cache-ul MySQL împarte proba în blocuri separate, cu o dimensiune minimă query_cache_min_res_unit. Ultimul astfel de bloc tăiat la o dimensiune a datelor, iar memoria rămasă este eliberată. Pentru a scrie date în memoria cache, MySQL ca alocă blocuri nevoie de query_cache_min_res_unit. Valoarea trebuie să specifice valoarea medie a dimensiunii eșantionului a tuturor cererilor. Query_cache_min_res_unit valoare aproximativă poate fi calculată cu formula query_cache_min_res_unit = (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache. O valoare prea mare va contribui la fragmentarea cache-ul este prea mic poate provoca degradarea performanței.
query_cache_size - cantitatea de memorie alocată pentru a stoca cache-ul de interogare. O valoare de 0 dezactivează MySQL Query Cache. Am stabilit valoarea bazată pe cantitatea de RAM disponibilă în sistem. Pentru a selecta valoarea optimă, în mod ideal Qcache_lowmem_prunes variabilă ar trebui să fie zero. În caz contrar, se recomandă ca în procesul de MySQL, această valoare a crescut ușor.
query_cache_type - parametru responsabil pentru cache-ul de locuri de muncă. Acesta poate fi setat la: ON, OFF și DEMAND. Această opțiune activează sau dezactivează MySQL Query Cache, în cazul în care valoarea este setată la query_cache_type DEMAND, MySQL va cache cereri singura directivă SQL_CACHE.
query_cache_wlock_invalidate - determină dacă datele vor fi preluate din memoria cache, în cazul în care masa la care sunt blocate pentru citire. În cazul în care valoarea parametrului ia query_cache_wlock_invalidate OFF. acesta va fi disponibil pentru a primi date dintr-un tabel blocat de interogare cache.

Pentru a monitoriza MySQL Query Cache, folosiți comanda:

Qcache_free_blocks - numărul de blocuri libere în cache. Cu cât sunt mai neutilizate blocuri, cu atât mai mare gradul de fragmentare a memoriei cache. În cazul în care rezultatul majorității cererilor are o cantitate mică de date eșantion, este necesar să se reducă valoarea parametrului query_cache_min_res_unit.
Qcache_total_blocks - numărul de blocuri ocupate.
Qcache_free_memory - cantitatea de memorie alocată cache.
Qcache_hits - numărul de cereri îndeplinite din cache.
Qcache_inserts - numărul de cereri stocate în memoria cache.
Qcache_lowmem_prunes - numărul de solicitări care au fost șterse din cauza overflow cache.
Qcache_not_cached - numărul de interogări non-în cache.
Qcache_queries_in_cache - numărul de cereri din cache.

Mecanismul scurt de Query Cache este după cum urmează. Sub MySQL cache interogare alocă zona de memorie dimensiunea query_cache_size. Pentru a scrie cerere rezultate într-un server de cache creează gratuit dimensiunea blocului query_cache_min_res_unit. După umplerea unității, serverul creează un nou bloc gol și așa mai departe, până când toate datele eșantionului este scris în memoria cache. Apoi, zona de memorie liberă a ultimului bloc alocat blocul liber nou. În cazul în care dimensiunea eșantionului este mai mare decât query_cache_limit valoarea setată. înregistrarea se oprește și memoria ocupată este eliberat.

Fragmentarea apare atunci când ștergerea unui cache prelua din cache, atunci când rezultatele de înregistrare ale noului volum de căutare a unităților eliberate este insuficientă. Pentru a determina gradul de fragmentare, este necesar să se acorde o atenție la valoarea Qcache_free_blocks. În mod ideal, valoarea trebuie să fie egală cu una, în cazul fragmentării - Qcache_total_blocks / 2. Se poate determina, de asemenea, ceea ce cache interogare în mare măsură fragmentată în cazul în care valoarea Qcache_lowmem_prunes este în continuă creștere, în ciuda faptului că valoarea Qcache_free_memory departe de zero.

Pentru a defragmenta memoria cache, utilizați comanda:

Formula Pentru a evalua eficacitatea funcționării cache este utilizat Qcache_hits / (Qcache_hits + Com_select).

A se vedea, de asemenea: