Pospešite svoje spletno mesto z MySQL Query Caching
Eden najboljših načinov za pospešitev vaše spletne aplikacije je omogočanje predpomnjenja poizvedb v bazi podatkov, ki predpomni pogosto uporabljene poizvedbe SQL v pomnilnik za skoraj takojšen dostop z naslednjo stranjo, ki zahteva isto zahtevo..
Razlog, zakaj je ta metoda tako močna, je, da vam ni treba spreminjati svoje spletne aplikacije, samo žrtvovati morate malo pomnilnika. To ne bo popravilo vseh vaših težav, vendar zagotovo ne more škoditi.
Opomba: če vaša aplikacija pogosto posodablja tabele, bo predpomnilnik poizvedb nenehno čistil in s tem ne boste dobili veliko ali nobene koristi. To je idealno za aplikacijo, ki se večinoma glasi proti bazi podatkov, kot je blog WordPress. To tudi ne bo delovalo, če delate na deljenem gostovanju.
Omogoči predpomnjenje s strežnikom
Prva stvar, ki jo boste želeli storiti, je, da je vaša namestitev MySQL dejansko na voljo podpora za predpomnjenje poizvedb. Večina distribucij to počne, vendar morate vseeno preveriti.
Ta ukaz boste morali zagnati iz konzole MySQL, ki vam bo povedala, če je na voljo predpomnjenje poizvedb.
mysql> prikaži spremenljivke, kot je 'have_query_cache'; + ------------------ + ------- + | Ime spremenljivke | Vrednost | + ------------------ + ------- + | have_query_cache | DA | +------------------+-------+
Ne zamenjajte tega, da je predpomnjenje poizvedb dejansko omogočeno, ker večina ponudnikov gostovanja tega ne bo omogočila privzeto. Nenavadno je, da je bila moja namestitev Ubuntu Feisty že omogočena ...
Nato bomo morali preveriti in preveriti, ali je omogočeno predpomnjenje poizvedb. Preveriti bomo morali več kot eno spremenljivko, tako da bomo lahko vse naredili hkrati s preverjanjem poizvedbe spremenljivke%
mysql> prikaži spremenljivke, kot je 'query%'; + ------------------------------ + --------- + | Ime spremenljivke | Vrednost | + ------------------------------ + --------- + | 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 | +------------------------------+---------+
Tu so pomembne postavke na seznamu in kaj pomenijo:
- query_cache_size - To je velikost predpomnilnika v bajtih. Če to vrednost nastavite na 0, bo onemogočeno predpomnjenje.
- query_cache_type - Ta vrednost mora biti vklopljena ali 1, če naj bo privzeto omogočeno predpomnjenje poizvedb.
- query_cache_limit - To je poizvedba največje velikosti (v bajtih), ki bo predpomnjena.
Če je vrednost query_cache_size nastavljena na 0 ali jo želite le spremeniti, morate zagnati naslednji ukaz, pri čemer upoštevajte, da je vrednost v bajtih. Na primer, če bi želeli dodeliti 8 MB v predpomnilnik, bi uporabili 1024 * 1024 * 8 = 8388608 kot vrednost.
SET GLOBAL query_cache_size = 8388608;
Podobno lahko druge možnosti nastavite z isto sintakso:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Kako naj vemo, če dejansko deluje? Z ukazom SHOW STATUS lahko povlečete vse spremenljivke, ki se začnejo s “Qc”, da si ogledate, kaj se dogaja pod pokrovom..
mysql> POKAŽI STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Ime spremenljivke | Vrednost | + ------------------------- + -------- + | 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 vrstic v nizu (0.00 sek)
Opazili boste, da imam dovolj prostega spomina. Če vaš strežnik kaže veliko lowmem suhih sliv, boste morda morali razmisliti o povečanju te vrednosti, vendar ne bi porabil preveč pomnilnika za predpomnjenje poizvedb za spletni strežnik ... pustite pomnilnik na voljo za apache, php, ruby ali karkoli uporabljate.
Omogoči v konfiguracijski datoteki
Če želite, da te spremembe preživijo ponovni zagon ali ponovni zagon strežnika mysql, jih boste morali dodati v konfiguracijsko datoteko /etc/mysql/my.cnf za MySQL. Upoštevajte, da je morda na drugem mestu v vaši namestitvi.
Odprite datoteko z urejevalnikom besedila v načinu sudo ali root, nato pa dodajte te vrednosti, če v datoteki še ne obstajajo. Če obstajajo, jih samo razčlenite.
query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576
Predpomnjenje poizvedb lahko znatno izboljša hitrost vaše spletne aplikacije, še posebej, če vaša aplikacija večinoma bere. Spremljajte stanje s pomočjo zgornjih metod in si oglejte, kako deluje sčasoma.