Pagina principala » HOWTO » Accelerați-vă site-ul Web cu MySQL Query Caching

    Accelerați-vă site-ul Web cu MySQL Query Caching

    Una dintre cele mai bune metode de a vă accelera aplicația web este să activați cache-ul de interogări în baza de date, care cache-uri utilizate în mod obișnuit interogări SQL în memorie pentru acces instantaneu la pagina următoare care face aceeași solicitare.

    Motivul pentru care această metodă este atât de puternică este că nu trebuie să faceți nicio modificare în aplicația dvs. web, ci doar să sacrificați puțină memorie. Acest lucru nu va rezolva toate problemele dvs., dar cu siguranță nu poate face rău.

    Notă: dacă aplicația actualizează frecvent tabelele, atunci memoria cache-ului de interogare va fi curățată în mod constant și nu veți beneficia de mult sau de vreun avantaj. Acesta este ideal pentru o aplicație care citește mai mult împotriva bazei de date, cum ar fi un blog WordPress. Acest lucru, de asemenea, nu va funcționa dacă sunteți difuzate pe gazdă partajată.

    Activați Caching cu rularea serverului

    Primul lucru pe care veți dori să-l faceți este să vă asigurați că instalarea MySQL are de fapt un suport pentru cache-ul de interogare disponibil. Cele mai multe distribuții fac, dar ar trebui să verificați oricum.

    Veți dori să executați această comandă din consola dvs. MySQL, care vă va spune dacă este disponibil cache-ul de interogare.

    mysql> arată variabile precum 'have_query_cache'; + ------------------ + ------- + | Numele variabilei | Valoare | + ------------------ + ------- + | have_query_cache | DA | +------------------+-------+ 

    Nu derulați această eroare în sensul că activarea interogării este, de fapt, activată, deoarece majoritatea furnizorilor de servicii de găzduire nu vor permite acest lucru în mod implicit. Destul de ciudat, instalarea mea de Ubuntu Feisty a permis deja ...

    Apoi va trebui să verificăm și să vedem dacă activarea interogării este activată. Va trebui să verificăm mai mult de o variabilă, așa că este bine să o facem simultan, verificând pentru interogarea variabilă%

    mysql> arată variabile precum 'query%'; + ------------------------------ + --------- + | Numele variabilei | Valoare | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+ 

    Iată elementele importante din listă și ce înseamnă acestea:

    • query_cache_size - Aceasta este dimensiunea cache-ului în octeți. Setarea acestei valori la 0 va dezactiva efectiv cache-ul.
    • query_cache_type - Această valoare trebuie să fie ON sau 1 pentru ca cache-ul de interogare să fie activat în mod implicit.
    • query_cache_limit - Aceasta este interogarea de dimensiune maximă (în octeți) care va fi stocată în cache.

    Dacă valoarea query_cache_size este setată la 0 sau doriți doar să o modificați, va trebui să executați următoarea comandă, având în vedere că valoarea este în octeți. De exemplu, dacă ați dori să alocați 8MB în memoria cache, am folosi 1024 * 1024 * 8 = 8388608 drept valoare.

    SET GLOBAL query_cache_size = 8388608;

    În mod similar, celelalte opțiuni pot fi setate cu aceeași sintaxă:

    SET GLOBAL query_cache_limit = 1048576;
    SET GLOBAL query_cache_type = 1;

    Acum cum să spunem dacă funcționează de fapt? Puteți folosi comanda SHOW STATUS pentru a trage toate variabilele care încep cu "Qc" pentru a arunca o privire la ceea ce se întâmplă sub capota.

    mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Numele variabilei | Valoare | + ------------------------- + -------- + | Qcache_free_blocks | 65 | | Qcache_free_memory | 201440 | | Qcache_hits | 18868 | | Qcache_inserts | 2940 | | Qcache_lowmem_prunes | 665 | | Qcache_not_cached | 246 | | Qcache_queries_in_cache | 492 | | Qcache_total_blocks | 1430 | + ------------------------- + -------- + 8 rânduri în set (0.00 sec) 

    Veți observa în statistici că am rămas multă memorie liberă. Dacă serverul dvs. prezintă o mulțime de prunuri lowmem, este posibil să aveți în vedere creșterea acestei valori, dar nu voi cheltui prea multă memorie în cache-ul interogării pentru un server web ... trebuie să lăsați memoria disponibilă pentru apache, php, ruby ​​sau indiferent de ce utilizați.

    Activați în fișierul Config

    Dacă doriți ca aceste modificări să supraviețuiască repornirea sau repornirea serverului mysql, va trebui să le adăugați în fișierul de configurare /etc/mysql/my.cnf pentru MySQL. Rețineți că ar putea fi într-o locație diferită a instalației dvs..

    Deschideți fișierul utilizând un editor de text în modul sudo sau root și apoi adăugați aceste valori dacă acestea nu există deja în fișier. Dacă acestea există, doar le dezmembrați.

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Cache-ul interogărilor poate îmbunătăți în mod semnificativ viteza aplicației dvs. web, mai ales dacă aplicația dvs. citește cel mai mult. Monitorizați starea utilizând metodele de mai sus și vedeți cum funcționează în timp.