Nopeuta Web-sivustoasi MySQL Query Cachingilla
Yksi parhaista tavoista nopeuttaa Web-sovellusta on sallia kyselyn välimuistin tallentaminen tietokannassasi, joka tallentaa yleisesti käytetyt SQL-kyselyt muistiin käytännössä välittömästi saman pyynnön suorittavan seuraavan sivun käyttämiseksi.
Syy tähän menetelmään on niin voimakas, että sinun ei tarvitse tehdä mitään muutoksia Web-sovellukseen, sinun täytyy vain uhrata vähän muistia. Tämä ei aio korjata kaikkia ongelmia, mutta se ei varmasti voi satuttaa.
Huomautus: jos sovelluksesi päivittää taulukkoja usein, kyselyn välimuisti poistetaan jatkuvasti ja et saa paljon tai hyötyä tästä. Tämä on ihanteellinen sovellukselle, joka useimmiten lukee tietokantaa, kuten WordPress-blogia. Tämä ei myöskään toimi, jos käytät jaettua hosting-palvelua.
Ota välimuisti käyttöön palvelimen käynnissä
Ensimmäinen asia, jonka haluat tehdä, on varmistaa, että MySQL: n asennuksessa on tosiasiallisesti kyselyn välimuistin tuki. Useimmat jakelut tekevät, mutta sinun pitäisi tarkistaa.
Haluat suorittaa tämän komennon MySQL-konsolista, joka kertoo, onko kyselyn välimuisti käytettävissä.
mysql> näytä muuttujia, kuten 'have_query_cache'; + ------------------ + ------- + | Muuttuja_nimi | Arvo | + ------------------ + ------- + | have_query_cache | KYLLÄ | +------------------+-------+
Älä tee tätä virheellisesti, koska kyselyn välimuisti on todella käytössä, koska useimmat hosting-palvelujen tarjoajat eivät aio ottaa tätä käyttöön. Kumma kyllä, minun Ubuntu Feisty -asennuksen asennukseni oli jo käytössä…
Seuraavaksi meidän on tarkistettava ja tarkistettava, onko kyselyn välimuisti käytössä. Meidän on tarkistettava useampi kuin yksi muuttuja, joten voimme myös tehdä sen kaikki kerralla tarkistamalla muuttujan kyselyn%
mysql> näytä muuttujat, kuten 'kysely%'; + ------------------------------ + --------- + | Muuttuja_nimi | Arvo | + ------------------------------ + --------- + | 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 | +------------------------------+---------+
Seuraavassa on tärkeät kohteet luettelossa ja mitä ne tarkoittavat:
- query_cache_size - Tämä on välimuistin koko tavuina. Tämän arvon asettaminen arvoon 0 poistaa välimuistin käytöstä tehokkaasti.
- query_cache_type - Tämän arvon on oltava ON tai 1, jos kyselyn välimuisti on otettu käyttöön oletuksena.
- query_cache_limit - Tämä on enimmäiskoko kysely (tavuina), joka tallennetaan välimuistiin.
Jos query_cache_size-arvo on asetettu arvoon 0 tai haluat vain muuttaa sitä, sinun on suoritettava seuraava komento pitäen mielessä, että arvo on tavuina. Jos esimerkiksi halusit jakaa 8MB: n välimuistiin, käytämme arvona 1024 * 1024 * 8 = 8388608.
SET GLOBAL query_cache_size = 8388608;
Samoin muut asetukset voidaan asettaa samaan syntaksiin:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Miten nyt kerrotaan, toimiiko se todella? Voit käyttää SHOW STATUS -komentoa vetämään kaikki muuttujat, jotka alkavat "Qc": llä, katsomaan, mitä hupun alla tapahtuu.
mysql> NÄYTÄ TILA LIKE 'Qc%'; + ------------------------- + -------- + | Muuttuja_nimi | Arvo | + ------------------------- + -------- + | 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 riviä asetettuna (0,00 sek)
Huomaat, että tilastoissa on paljon vapaata muistia. Jos palvelimessasi on paljon matalaa luumuja, sinun täytyy ehkä harkita tämän arvon lisäämistä, mutta en viettäisi liikaa muistia web-palvelimen kyselyn välimuistiin… sinun täytyy jättää muistia apache-, php-, ruby- tai mitä käytät.
Ota käyttöön Config-tiedostossa
Jos haluat, että nämä muutokset selviävät uudelleen tai käynnistetään uudelleen mysql-palvelin, sinun täytyy lisätä ne /etc/mysql/my.cnf-määritystiedostoon MySQL: lle. Huomaa, että se saattaa olla eri paikassa asennuksessa.
Avaa tiedosto tekstieditorilla sudo- tai root-tilassa ja lisää sitten nämä arvot, jos ne eivät ole jo tiedostossa. Jos ne ovat olemassa, vain poista ne.
query_cache_size = 268435456 query_cache_type = 1 kysely_cache_limit = 1048576
Kyselyn välimuistiinpano voi parantaa merkittävästi web-sovelluksen nopeutta, varsinkin jos sovelluksesi lukee enimmäkseen. Seuraa tilaa yllä olevien menetelmien avulla ja katso, miten se toimii ajan mittaan.