/ / Få fart på nettstedet ditt med MySQL Qachey Cache

Få fart på nettstedet ditt med MySQL Query Cache

En av de beste måtene å få fart på nettet dittapplikasjonen er å aktivere hurtigbufring i databasen, som bufrer ofte brukte SQL-spørringer i minnet for praktisk talt øyeblikkelig tilgang på neste side som gjør samme forespørsel.

Grunnen til at denne metoden er så kraftig er at dutrenger ikke å gjøre noen endringer i webapplikasjonen din, du trenger bare å ofre litt minne. Dette kommer ikke til å løse alle problemene dine, men det kan definitivt ikke skade.

Merk: Hvis applikasjonen din oppdaterer tabeller ofte, blir spørringsbufferen kontinuerlig renset, og du vil ikke få mye eller noen fordel av dette. Dette er ideelt for et program som stort sett leser mot databasen, for eksempel en WordPress-blogg. Dette fungerer ikke hvis du kjører på delt hosting.

Aktiver hurtigbufring med serverkjøring

Det første du vil gjøre er å sørge for at installasjonen av MySQL faktisk har støtte for spørringsbuffer tilgjengelig. De fleste distribusjoner gjør det, men du bør sjekke uansett.

Du vil kjøre denne kommandoen fra MySQL-konsollen din, som vil fortelle deg om spørringsbuffer er tilgjengelig.

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

Ikke ta feil av dette som å si at hurtigbufringer faktisk aktivert, fordi de fleste hostingleverandører ikke vil aktivere dette som standard. Merkelig nok hadde Ubuntu Feisty-installasjonen den allerede aktivert ...

Neste gang må vi sjekke og se om hurtigbufring er aktivert. Vi må sjekke mer enn én variabel, så vi kan like godt gjøre det på en gang ved å se etter variabelen spørring%

mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| 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    |
+------------------------------+---------+

Her er de viktige elementene på listen og hva de betyr:

  • query_cache_size - Dette er størrelsen på hurtigbufferen i byte. Hvis du setter denne verdien til 0, deaktiveres hurtigbufring effektivt.
  • query_cache_type - Denne verdien må være PÅ eller 1 for at hurtigbufring kan aktiveres som standard.
  • query_cache_limit - Dette er spørsmålet om maksimal størrelse (i byte) som blir bufret.

Hvis query_cache_size-verdien er satt til 0 eller degbare vil endre den, må du kjøre følgende kommando, og husk at verdien er i byte. Hvis du for eksempel vil tildele 8 MB til cachen, vil vi bruke 1024 * 1024 * 8 = 8388608 som verdien.

SET GLOBAL query_cache_size = 8388608;

Tilsvarende kan de andre alternativene angis med samme syntaks:

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

Hvordan kan vi se om det faktisk fungerer? Du kan bruke SHOW STATUS-kommandoen til å trekke alle variablene som begynner med “Qc” for å se på hva som foregår under panseret.

mysql> SHOW STATUS LIKE 'Qc%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| 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 rows in set (0.00 sec)

Du vil merke i statistikken at jeg har nok avledig minne igjen. Hvis serveren din viser mange lowmem svisker, kan det hende du må vurdere å øke denne verdien, men jeg vil ikke bruke for mye minne på spørring cache for en webserver ... du må la minne være tilgjengelig for apache, php, ruby ​​eller hva du bruker.

Aktiver i Config File

Hvis du vil at disse endringene skal overleve en omstart ellerstart på nytt på mysql-serveren, må du legge dem til i /etc/mysql/my.cnf-konfigurasjonsfilen for MySQL. Merk at det kan være et annet sted på installasjonen.

Åpne filen ved hjelp av en tekstredigerer i sudo- eller rotmodus, og legg deretter til disse verdiene hvis de ikke allerede eksisterer i filen. Hvis de eksisterer, er det bare å kammentere dem.

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

Spørringsbuffer kan forbedre hastigheten på webapplikasjonen betydelig, spesielt hvis applikasjonen stort sett leser. Overvåk statusen ved hjelp av metodene ovenfor og se hvordan den fungerer over tid.