Hjemmeside » hvordan » Fremskynde dit websted med MySQL Query Caching

    Fremskynde dit websted med MySQL Query Caching

    En af de bedste måder at fremskynde din webapplikation på er at aktivere forespørgselsbufring i din database, hvilket caches ofte brugt SQL-forespørgsler i hukommelsen for næsten øjeblikkelig adgang på den næste side, der gør samme anmodning.

    Årsagen til, at denne metode er så kraftfuld, er at du ikke behøver at foretage ændringer i din webapplikation, du skal bare ofre en lille smule hukommelse. Dette er ikke til at løse alle dine problemer, men det kan bestemt ikke skade.

    Bemærk: Hvis din applikation opdaterer tabeller ofte, bliver forespørgselsbufferen konstant renset, og du får ikke meget eller nogen fordel af dette. Dette er ideelt til en applikation, der hovedsagelig læser databasen, f.eks. En WordPress-blog. Dette fungerer også ikke, hvis du kører på delt hosting.

    Aktivér caching med serverkørsel

    Den første ting, du vil gøre, er at sørge for, at din installation af MySQL faktisk har forespørgsels caching-support til rådighed. De fleste distributioner gør det, men du bør alligevel kontrollere.

    Du vil gerne køre denne kommando fra din MySQL-konsol, som vil fortælle dig, om forespørgselscaching er tilgængelig.

    mysql> vis variabler som 'have_query_cache'; + ------------------ + ------- + | Variable_name | Værdi | + ------------------ + ------- + | have_query_cache | JA | +------------------+-------+ 

    Misforstå ikke dette, da det betyder, at forespørgselsbufring faktisk er aktiveret, fordi de fleste hostingudbydere ikke vil aktivere dette som standard. Mærkeligt nok har min Ubuntu Feisty installation allerede gjort det muligt ...

    Næste skal vi kontrollere og se, om forespørgsels caching er aktiveret. Vi skal kontrollere mere end én variabel, så vi kan lige så godt gøre det hele på én gang ved at tjekke for variabelen forespørgslen%

    mysql> vis variabler som 'forespørgsel%'; + ------------------------------ + --------- + | Variable_name | Værdi | + ------------------------------ + --------- + | 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 vigtige elementer i listen og hvad de betyder:

    • query_cache_size - Dette er størrelsen af ​​cachen i bytes. Indstilling af denne værdi til 0 vil effektivt deaktivere caching.
    • query_cache_type - Denne værdi skal være ON eller 1 for query caching, der skal aktiveres som standard.
    • query_cache_limit - Dette er den maksimale størrelse forespørgsel (i bytes), der vil blive cachelagret.

    Hvis værdien query_cache_size er sat til 0, eller du bare vil ændre den, skal du køre følgende kommando, idet du husker at værdien er i byte. Hvis du for eksempel ville tildele 8 MB til cachen, ville vi bruge 1024 * 1024 * 8 = 8388608 som værdien.

    SET GLOBAL query_cache_size = 8388608;

    På samme måde kan de andre muligheder indstilles med samme syntaks:

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

    Hvordan fortæller vi, om det rent faktisk virker? Du kan bruge SHOW STATUS-kommandoen til at trække alle de variabler, der starter med "Qc" for at se, hvad der sker under emhætten.

    mysql> VIS STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Variable_name | Værdi | + ------------------------- + -------- + | 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 rækker i sæt (0,00 sek) 

    Du vil bemærke i statistikken, at jeg har masser af ledig hukommelse tilbage. Hvis din server viser mange lowmem svesker, skal du muligvis overveje at øge denne værdi, men jeg ville ikke bruge for meget hukommelse til forespørgselsbufring til en webserver ... du skal forlade hukommelsen til rådighed for apache, php, ruby ​​eller uanset hvad du bruger.

    Aktivér i Config File

    Hvis du vil have disse ændringer for at overleve en genstart eller genstart af mysql-serveren, skal du tilføje dem i din /etc/mysql/my.cnf konfigurationsfil til MySQL. Bemærk, at det måske er på en anden placering på din installation.

    Åbn filen ved hjælp af en tekstredigerer i sudo eller root-tilstand, og tilføj disse værdier, hvis de ikke allerede findes i filen. Hvis de eksisterer, skal du bare undlade dem.

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Query caching kan betydeligt forbedre hastigheden på din webapplikation, især hvis din applikation mest læser. Overvåg status ved hjælp af metoderne ovenfor og se hvordan det fungerer over tid.