Sonntag, 25. März 2012

Speed ​​Up uw website met MySQL Query Caching

Een van de beste manieren om de snelheid van uw web-applicatie is om een ​​query caching inschakelen in uw database, die vaak gebruikt SQL-query's caches in het geheugen voor vrijwel directe toegang van de volgende pagina die hetzelfde verzoek maakt.

De reden dat deze methode zo krachtig is dat je niet hoeft te eventuele wijzigingen in uw web-applicatie te maken, hoef je alleen maar een klein beetje van het geheugen te offeren. Dit is niet van plan om al uw problemen op te lossen, maar het kan zeker geen kwaad.

Opmerking: als uw applicatie-updates tabellen vaak dan de query cache wordt voortdurend gezuiverd worden en je zal niet veel of enig voordeel van deze. Dit is ideaal voor een toepassing die vooral doet leest tegen de database, zoals een WordPress blog. Ook dit zal niet werken als u werkt op shared hosting.

Enable Caching met een server waarop

Het eerste wat je wilt doen, is ervoor te zorgen dat uw installatie van MySQL query's eigenlijk caching ondersteuning beschikbaar is. De meeste distributies doen, maar je moet toch controleren.

U wilt deze opdracht uitvoeren van uw MySQL console, die zal u vertellen of vragen caching beschikbaar is.

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

Niet fout dit als betekenis die query cache daadwerkelijk is ingeschakeld, omdat de meeste hosting providers zijn niet van plan om dit mogelijk te maken door de standaard. Vreemd genoeg, mijn Ubuntu Feisty installatie al had ingeschakeld ...

Nu gaan we nodig hebben om te controleren en als query's caching is ingeschakeld te zien. We moeten meer dan een variabele controleren, dus kunnen we net zo goed het allemaal in een keer door te controleren voor de variabele vraag%

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    | +------------------------------+---------+ 

Hier is het belangrijk items in de lijst en wat ze betekenen:

  • query_cache_size - Dit is de grootte van de cache in bytes. Het instellen van deze waarde op 0 wordt effectief uit te schakelen caching.
  • query_cache_type - Deze waarde moet ON of 1 te worden voor de zoekactie caching wordt standaard ingeschakeld.
  • query_cache_limit - Dit is de maximale grootte query (in bytes) dat zal worden gecached.

Als de query_cache_size waarde is ingesteld op 0 of wil je gewoon om het te veranderen, moet u het volgende commando uitvoeren, rekening houdend dat de waarde is in bytes. Bijvoorbeeld, als je wilde toewijzen 8MB om de cache zouden we gebruik van 1024 * 1024 * 8 = 8388608 als de waarde.

SET GLOBAL query_cache_size = 8388608;

Op dezelfde manier kan de andere opties worden ingesteld met dezelfde syntax:

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

Maar hoe kunnen wij weten of het is eigenlijk werkt? U kunt gebruik maken van de SHOW STATUS commando om alle variabelen die beginnen met "Qc" om een ​​blik op wat er gaande is onder de motorkap te trekken.

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) 

U zult merken in de statistieken dat ik genoeg vrij geheugen over hebben. Als uw server toont veel lowmem pruimen, moet u overwegen om deze waarde, maar ik zou te veel geheugen niet te besteden aan vragen caching voor een web server ... je moet vertrekken geheugen beschikbaar voor apache, php, robijn, of wat u gebruikt.

Inschakelen in Config File

Als u wilt dat deze wijzigingen een reboot overleven of van de mysql server opnieuw op te starten, moet u ze toe te voegen in je / etc / mysql / my.cnf configuratie bestand voor MySQL. Merk op dat het misschien op een andere locatie op uw installatie.

Open het bestand met een text editor in sudo of root-modus, en voeg deze waarden als ze nog niet bestaan ​​in het bestand. Als ze bestaan, net uncomment hen.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Query caching kan een aanzienlijke verbetering van de snelheid van uw web-applicatie, vooral als uw aanvraag meestal doet leest. De status met behulp van de bovenstaande methoden en zie hoe het werkt in de tijd.

Keine Kommentare:

Kommentar veröffentlichen