Kiirendada oma veebisaiti MySQL päringu vahemäluga
Üks parimaid viise veebirakenduse kiirendamiseks on võimaldada päringute vahemällu salvestamine teie andmebaasis, mis talletab mälus olevad üldkasutatavad SQL-päringud, mis võimaldavad peaaegu koheselt juurdepääsu sellele samale päringule järgneval lehel.
Põhjus, miks see meetod on nii võimas, on see, et te ei pea oma veebirakenduses mingeid muudatusi tegema, vaid peate ohverdama natuke mälu. See ei lahenda kõiki teie probleeme, kuid see ei saa kindlasti haiget teha.
Märkus: kui teie rakendused värskendavad tabeleid sageli, puhastatakse päringu vahemälu pidevalt ja sellest ei saa palju ega mingit kasu. See sobib ideaalselt rakenduse jaoks, mis enamasti ei loe andmebaasi, näiteks WordPressi blogi. See ei toimi ka siis, kui töötate ühiskasutuses.
Luba vahemälu serveri käivitamisega
Esimene asi, mida sa tahad teha, on veenduda, et MySQL-i installimisel on olemas päringu vahemälu tugi. Enamik jaotusi toimib, kuid te peate ikkagi kontrollima.
Sa tahad seda käsku oma MySQL-konsoolist käivitada, mis ütleb teile, kas päringu vahemälu on saadaval.
mysql> näitavad muutujaid nagu 'have_query_cache'; + ------------------ + ------- + | Muutuja_nimi | Väärtus | + ------------------ + ------- + | have_query_cache | JAH | +------------------+-------+
Ära tee seda viga, mis tähendab, et päringu vahemällu salvestamine on tegelikult lubatud, sest enamik hosting pakkujaid seda vaikimisi lubab. Kummalisel kombel oli minu Ubuntu Feisty paigaldusel juba see lubatud ...
Seejärel peame kontrollima ja vaatama, kas päringu vahemälu on lubatud. Peame kontrollima rohkem kui ühte muutujat, nii et me saame seda teha ka korraga, kontrollides muutuva päringu%
mysql> näitavad muutujaid nagu "päring%"; + ------------------------------ + --------- + | Muutuja_nimi | Väärtus | + ------------------------------ + --------- + | 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 | +------------------------------+---------+
Siin on loendis olulised elemendid ja mida need tähendavad:
- query_cache_size - See on vahemälu suurus baitides. Selle väärtuse seadistamine väärtusele 0 keelab vahemälu.
- query_cache_type - See väärtus peab olema ON või 1, kui päringu vahemälu on vaikimisi lubatud.
- query_cache_limit - See on maksimaalse suuruse päring (baitides), mis salvestatakse vahemällu.
Kui päringu_cache_size väärtus on 0 või soovite seda lihtsalt muuta, peate järgima järgmist käsku, pidades silmas, et väärtus on baitides. Näiteks kui soovisite 8MB eraldada vahemälule, mida me kasutaksime 1024 * 1024 * 8 = 8388608 väärtuseks.
SET GLOBAL query_cache_size = 8388608;
Samamoodi saab teisi valikuid määrata sama süntaksiga:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Kuidas me nüüd ütleme, kas see tegelikult töötab? Käsku SHOW STATUS saab kasutada kõiki muutujaid, mis algavad “Qc” -ga, et vaadata, mis toimub kapoti all.
mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Muutuja_nimi | Väärtus | + ------------------------- + -------- + | 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 rida (0,00 sekundit)
Sa märkad statistikates, et mul on palju vaba mälu. Kui teie serveril on palju lowmem ploome, peate võib-olla kaaluma selle väärtuse suurendamist, kuid ma ei kulutaks liiga palju mälu veebiserveri päringu vahemällu salvestamiseks… peate jätma mälu kättesaadavaks apache, php, ruby, või mida iganes sa kasutad.
Luba konfigureerimisfailis
Kui soovite, et need muudatused jääksid mysql serveri taaskäivitamise või taaskäivitamise ellu, peate need lisama MySQLi /etc/mysql/my.cnf konfiguratsioonifaili. Pange tähele, et see võib olla teie installi erinevas kohas.
Avage fail, kasutades tekstiredaktorit sudo või juure režiimis, ja lisage seejärel need väärtused, kui need pole failis juba olemas. Kui need on olemas, siis lihtsalt jäta need ära.
query_cache_size = 268435456 query_cache_type = 1 päring_cache_limit = 1048576
Päringute vahemällu salvestamine võib teie veebirakenduse kiirust märkimisväärselt parandada, eriti kui teie taotlus loeb enamasti. Jälgige olekut ülaltoodud meetodite abil ja vaadake, kuidas see aja jooksul toimib.