/ / Fremskyn dit websted med MySQL Query-cache

Fremskynde dit websted med MySQL Query-cache

En af de bedste måder at fremskynde din web påansøgning er at aktivere cache-cache i din database, som cache, der ofte bruges SQL-forespørgsler i hukommelsen til praktisk talt øjeblikkelig adgang fra den næste side, der fremsætter den samme anmodning.

Årsagen til at denne metode er så kraftig er, at dubehøver ikke at foretage nogen ændringer i din webapplikation, du skal bare ofre lidt hukommelse. Dette vil ikke løse alle dine problemer, men det kan bestemt ikke skade.

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

Aktivér cache med serverkørsel

Den første ting, du ønsker at gøre, er at sikre dig, at din installation af MySQL faktisk har supportforespørgsel cache-cache tilgængelig. De fleste distributioner gør det, men du skal alligevel kontrollere.

Du vil køre denne kommando fra din MySQL-konsol, som fortæller dig, om cache-forespørgsel er tilgængelig.

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

Forkert ikke dette, så det betyder, at forespørgselscachener faktisk aktiveret, fordi de fleste hostingudbydere ikke vil aktivere dette som standard. Mærkeligt nok havde min Ubuntu Feisty installation allerede aktiveret ...

Derefter skal vi kontrollere og se, om cache-cache er aktiveret. Vi bliver nødt til at kontrollere mere end en variabel, så vi kan lige så godt gøre det hele på én gang ved at se efter variabelforespørgslen%

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 vigtige poster på listen, og hvad de betyder:

  • query_cache_size - Dette er størrelsen på cachen i byte. Hvis du indstiller denne værdi til 0, deaktiveres cache effektivt.
  • query_cache_type - Denne værdi skal være ON eller 1 for at cache-cache kan aktiveres som standard.
  • query_cache_limit - Dette er den maksimale forespørgsel (i byte), der vil blive cache.

Hvis værdien query_cache_size er indstillet til 0 eller digbare vil ændre det, skal du køre følgende kommando, og husk at værdien er i byte. Hvis du f.eks. Ville allokere 8MB til cachen, ville vi bruge 1024 * 1024 * 8 = 8388608 som værdien.

SET GLOBAL query_cache_size = 8388608;

Tilsvarende kan de andre indstillinger indstilles med den samme syntaks:

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

Hvordan kan vi nu se, om det rent faktisk fungerer? Du kan bruge kommandoen VIS STATUS til at trække i alle de variabler, der starter med “Qc” for at se på, hvad der foregår under hætten.

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)

I statistikken bemærkes, at jeg har masser affri hukommelse tilbage. Hvis din server viser en masse lowmem-svisker, skal du muligvis overveje at øge denne værdi, men jeg ville ikke bruge for meget hukommelse på forespørgselscache til en webserver ... du har brug for at lade hukommelsen være tilgængelig til apache, php, ruby ​​eller uanset hvad du bruger.

Aktivér i Config File

Hvis du vil have disse ændringer til at overleve en genstart ellergenstart af mysql-serveren, skal du tilføje dem til din /etc/mysql/my.cnf-konfigurationsfil til MySQL. Bemærk, at det muligvis er et andet sted på din installation.

Åbn filen ved hjælp af en teksteditor i sudo- eller rodtilstand, og tilføj derefter disse værdier, hvis de ikke allerede findes i filen. Hvis de findes, skal du bare fjerne dem.

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

Forespørgsecaching kan forbedre hastigheden på din webapplikation markant, især hvis din applikation for det meste læser. Overvåg status ved hjælp af ovenstående metoder og se, hvordan det fungerer over tid.