Skip to main content

Fremskynde ditt nettsted med MySQL Query Caching

Fremskynde ditt nettsted med MySQL Query Caching

Geoffrey Carr

En av de beste måtene å øke hastigheten på webapplikasjonen er å aktivere query-caching i databasen, som caches ofte brukte SQL-spørringer i minnet for praktisk øyeblikkelig tilgang til 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 ønske å kjøre denne kommandoen fra MySQL-konsollen, som vil fortelle deg om spørrekryptering er tilgjengelig.

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

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 forespørselsbufring er aktivert. Vi må sjekke mer enn én variabel, så vi kan like godt gjøre alt på en gang ved å sjekke variabelen spørringen%

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 i listen og hva de betyr:

  • query_cache_size - Dette er størrelsen på hurtigbufferen i byte. Ved å sette denne verdien til 0, deaktiveres 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 byte) som vil bli cached.

Hvis verdien for query_cache_size er satt til 0, eller du bare vil endre den, må du kjøre følgende kommando, med tanke på 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> 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 legge merke til i statistikken at jeg har rikelig med 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.

Link
Plus
Send
Send
Pin