Hjemmeside » hvordan » Fremskynde ditt nettsted med MySQL Query Caching

    Fremskynde ditt nettsted med MySQL Query Caching

    En av de beste måtene å øke hastigheten på webapplikasjonen din er å aktivere spørring caching i databasen din, som caches ofte brukte SQL-spørringer i minnet for nesten umiddelbar tilgang på neste side som gjør den samme forespørselen.

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

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

    Aktiver caching med serverløp

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

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

    mysql> vis variabler som 'have_query_cache'; + ------------------ + ------- + | Variabelnavn | Verdi | + ------------------ + ------- + | have_query_cache | JA | +------------------+-------+ 

    Ikke misforstå dette slik at forespørselsbufring faktisk er aktivert, fordi de fleste vertsleverandører ikke skal aktivere dette som standard. Merkelig nok, hadde min Ubuntu Feisty-installasjon allerede aktivert ...

    Deretter må vi sjekke og se om spørrekopiering er aktivert. Vi må sjekke mer enn én variabel, så vi kan også like godt gjøre alt på en gang ved å sjekke variabelen spørringen%

    mysql> vis variabler som 'spørring%'; + ------------------------------ + --------- + | Variabelnavn | Verdi | + ------------------------------ + --------- + | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 8388608 | | query_cache_type | PÅ | | query_cache_wlock_invalidate | AV | | query_prealloc_size | 8192 | +------------------------------+---------+ 

    Her er de viktige elementene i listen og hva de betyr:

    • query_cache_size - Dette er størrelsen på hurtigbufferen i byte. Setter denne verdien til 0 vil deaktivere caching effektivt.
    • query_cache_type - Denne verdien må være ON eller 1 for spørring caching for å være aktivert som standard.
    • query_cache_limit - Dette er maksimumsstørrelsen (i bytes) som vil bli cached.

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

    SET GLOBAL query_cache_size = 8388608;

    På samme måte kan de andre alternativene settes med samme syntaks:

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

    Nå, hvordan forteller vi om det faktisk fungerer? Du kan bruke SHOW STATUS-kommandoen til å trekke alle variablene som starter med "Qc" for å se på hva som skjer under hetten.

    mysql> VIS STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Variabelnavn | Verdi | + ------------------------- + -------- + | 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 rader i settet (0,00 sek) 

    Du vil merke i statistikken at jeg har mye ledig 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 caching for en webserver ... du må la minne tilgjengelig for apache, php, ruby ​​eller uansett hva du bruker.

    Aktiver i Config File

    Hvis du vil at disse endringene skal overleve, omstart eller omstart av mysql-serveren, må du legge dem til i /etc/mysql/my.cnf konfigurasjonsfilen for MySQL. Vær oppmerksom på at det kan være et annet sted på installasjonen din.

    Åpne filen ved hjelp av en tekstredigerer i sudo eller rotmodus, og legg til disse verdiene hvis de ikke allerede finnes i filen. Hvis de eksisterer, bare uncomment dem.

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Query caching kan forbedre hastigheten på webapplikasjonen din, spesielt hvis søknaden din hovedsakelig leser. Overvåk statusen ved å bruke metodene ovenfor og se hvordan det fungerer over tid.