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 pe 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ă partajate.
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 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 deranjează acest lucru în sensul că caching-ul interogării este de fapt activat, deoarece majoritatea furnizorilor de hosting nu vor permite acest lucru în mod implicit. Destul de ciudat, instalarea mea Ubuntu Feisty a făcut deja posibilă ...
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:
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 fi dorit să alocați 8MB în memoria cache, am fi folosit valoarea 1024 * 1024 * 8 = 8388608.
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 GLOBALquery_cache_type
= 1;
Acum, cum să spunem dacă funcționează? 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 ca "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. arată 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ărilor pentru un server web ... trebuie să lăsați memoria disponibilă pentru apache, php, ruby sau indiferent de ce folosiț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ă este posibil să se afle î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ă, trebuie doar să le dezintegraț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.