Mysql optimizați memoria cache - mysql - blog articole utile despre dezvoltarea și promovarea site-urilor

Mysql optimizați memoria cache - mysql - blog articole utile despre dezvoltarea și promovarea site-urilor
Interogarea Cache cachează rezultatele interogării. Aceasta înseamnă că cererea memorată în cache nu este executată deloc. Mai mult, cache-ul funcționează chiar înainte de parsarea interogării în sine. Și aceasta înseamnă că cererea ar trebui să fie exact aceeași ca în cache, până la un octet.






Pentru configurația cache-ului, variabilele de sistem care încep cu "query_cache_"

În primul rând, asigurați-vă că cache este activat. Query_cache_type variabilă trebuie setat la ON (1) sau CERERII (2) și query_cache_size să fie nenul.

Când „query_cache_type = ON“ Caches toate cererile, cu excepția celor care conțin SQL_NO_CACHE indiciu și anumite excepții.
Când 'query_cache_type = DEMAND', numai interogările care încep cu SELECT SQL_CACHE sunt memorate în cache.

query_cache_min_res_unit dimensiune minimă a blocului de memorie alocată pentru stocarea rezultatelor interogării cache. MySQL nu stochează memoria cache într-o singură bucată mare, în loc de blocuri alocate la cerere, cu un minim de query_cache_min_res_unit dimensiune (= 4KB implicit). Ultimul astfel de bloc tăiat la o dimensiune a datelor, iar memoria rămasă este eliberată.






Și dacă aveți multe cereri mici în memoria cache, acest lucru poate duce la fragmentarea memoriei datorită numărului mare de blocuri libere. Acest lucru, la rândul său, cauzează ștergerea înregistrărilor memorate din cache din cauza lipsei de memorie. În acest caz, este logic să reduceți valoarea query_cache_min_res_unit. Dacă majoritatea interogărilor dvs. produc un rezultat mare, creșterea acestui parametru poate îmbunătăți performanța.

Pentru a monitoriza cache-ul de interogare este folosit

Cache-ul de interogare nu este întotdeauna utilizat pentru toate tipurile de interogări. Dacă dimensiunea rezultatului interogării depășește query_cache_limit (= 1MB în mod implicit), aceasta nu este stocată în cache. MySQL la versiunea 4.1.1 nu suportă memoria cache în tranzacții.

  • Interogări cu tabele temporare sau care nu utilizează deloc tabele;
  • Solicitări care generează avertismente;
  • Solicitări care sunt subqueries ale unei interogări externe;
  • Cereri în cadrul procedurilor și funcțiilor stocate;
  • Interogări cu SQL_NO_CACHE
  • Rapoarte pregătite;
  • Solicitările în care sunt utilizate funcțiile:
    BENCHMARK (), CONNECTION_ID (), CONVERT_TZ (), CURDATE (), CURRENT_DATE (), CURRENT_TIME (), CURRENT_TIMESTAMP (), CURTIME (), DATABASE (), ENCRYPT (), cu un argument, FOUND_ROWS (), GET_LOCK () , LAST_INSERT_ID (), LOAD_FILE (), MASTER_POS_WAIT (), ACUM (), RAND (), RELEASE_LOCK (), somn (), SYSDATE (), UNIX_TIMESTAMP () fără argumente, USER (), UUID ();
  • Interogări folosind funcțiile stocate, variabile utilizator sau link la o masă din INFORMATION_SCHEMA sistem sau baze mysql;
  • Solicitări care au următoarele forme:
    SELECTARE ... ÎN MODUL DE ACȚIUNE
    SELECTAȚI ... PENTRU UPDATE
    SELECTAREA ... IN OUTFILE ...
    SELECTĂ ... ÎN DUMPFILE ...
    SELECT * FROM ... WHERE autoincrement_col ESTE NULL






Trimiteți-le prietenilor: