If-Koubou

Nopeuta Web-sivustoasi MySQL-kyselyn välimuistissa

Nopeuta Web-sivustoasi MySQL-kyselyn välimuistissa (Miten)

Yksi parhaista tavoista nopeuttaa Web-sovellusta on ottaa käyttöön tietokannan kysely välimuisti, joka välittää usein käytettyjä SQL-kyselyjä muistiin, jotta seuraavaa sivua, joka tekee saman pyynnön, käyttää lähes välittömästi.

Syy tähän menetelmään on niin tehokas, että sinun ei tarvitse tehdä mitään muutoksia web-sovellukseen, sinun on vain uhrata vähän muistia. Tämä ei korjaa kaikkia ongelmia, mutta se ei todellakaan voi vahingoittaa.

Huomaa: jos sovellus päivittää taulukoita usein, kyselyvälimuisti tyhjennetään jatkuvasti, eikä sinulla ole paljon tai mitään hyötyä tästä. Tämä sopii sovellukselle, joka enimmäkseen lukee tietokantaa, kuten WordPress-blogia. Tämä ei myöskään toimi, jos käytät jaettua hostingia.

Ota käyttöön Caching ja palvelimen käyttö

Ensimmäinen asia, jonka haluat tehdä, on varmistaa, että MySQL: n asentamisessa on käytännössä kyselyn välimuistitukea. Useimmat jakelut tekevät, mutta sinun kannattaa kuitenkin tarkistaa.

Haluat suorittaa tämän komennon MySQL-konsolista, joka kertoo, onko kyselyn välimuistin saatavana.

mysql> näytä muuttujat kuten "have_query_cache"; + ------------------ + ------- + | Variable_name | Arvo | + ------------------ + ------- + | have_query_cache | KYLLÄ + ------------------ + ------- + 

Älä yritä sanoa, että kysely välimuistissa on todella käytössä, koska useimmat hosting-palvelujen tarjoajat eivät aio mahdollistaa tätä oletusarvoisesti. Kumma kyllä, Ubuntu Feisty-asennuksessani oli jo käytössä ...

Seuraavaksi meidän on tarkistettava, onko kyselyn välimuisti käytössä. Meidän on tarkistettava useampi kuin yksi muuttuja, joten voimme myös tehdä sen kaiken kerralla tarkistamalla muuttujan kysely%

mysql> näyttää muuttujat kuten "query%"; + ------------------------------ + --------- + | Variable_name | 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 | + ------------------------------ + --------- + 

Tässä ovat tärkeät listan kohteet ja mitä he tarkoittavat:

  • query_cache_size - Tämä on välimuistin koko tavuina. Tämän arvon asettaminen arvoon 0 poistaa tehokkaasti välimuistin.
  • query_cache_type - Tämän arvon on oltava ON tai 1, jos kysely välimuistissa on oletusarvoisesti käytössä.
  • query_cache_limit - Tämä on välimuistissa oleva enimmäiskoko-kysely (tavuina).

Jos query_cache_size-arvo on asetettu arvoon 0 tai haluat vain vaihtaa sen, sinun on suoritettava seuraava komento, pitäen mielessä, että arvo on tavuina. Jos esimerkiksi haluat jakaa välimuistin 8 megatavua, käytämme arvoa 1024 * 1024 * 8 = 8388608.

SET GLOBAL query_cache_size = 8388608;

Samoin muut vaihtoehdot voidaan asettaa samalla syntaksilla:

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

Nyt, miten kerromme, toimiiko se todella? Voit käyttää SHOW STATUS -komennolla vetää kaikki muuttujat, jotka alkavat "Qc": lla, jotta voit katsoa, ​​mitä tapahtuu huuvan alla.

mysql> NÄYTÄ TILAN LIKE "Qc%"; + ------------------------- + -------- + | Variable_name | 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ä joukossa (0.00 s) 

Huomaat tilastoista, että minulla on runsaasti vapaata muistia jäljellä. Jos palvelimellasi näytetään paljon alhaisia ​​luumuja, saatat joutua harkitsemaan tämän arvon lisäämistä, mutta en halua käyttää liikaa muistia kyselyn välimuistissa web-palvelimelle ... joudut jättämään muistia apache, php, ruby ​​tai mitä käytät.

Ota käyttöön Config-tiedosto

Jos haluat, että nämä muutokset selviävät mysql-palvelimen uudelleenkäynnistyksessä tai uudelleenkäynnistyksessä, sinun on lisättävä ne MySQL: n /etc/mysql/my.cnf -asetustiedostoon. Huomaa, että se saattaa olla eri asennuksessa.

Avaa tiedosto tekstieditorilla sudo- tai root-tilassa ja lisää sitten nämä arvot, jos ne eivät jo ole tiedostossa. Jos ne ovat olemassa, vain poista ne.

query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

Kyselyvälimuistitoiminto voi merkittävästi parantaa verkkosovelluksen nopeutta, varsinkin jos sovelluksesi enimmäkseen lukee. Seuraa tilan yllä olevia menetelmiä ja katso, miten se toimii ajan myötä.