Urýchliť vaše webové stránky pomocou MySQL Query Caching

Urýchliť vaše webové stránky pomocou MySQL Query Caching
Urýchliť vaše webové stránky pomocou MySQL Query Caching

Video: Urýchliť vaše webové stránky pomocou MySQL Query Caching

Video: Urýchliť vaše webové stránky pomocou MySQL Query Caching
Video: I Spent a Night at Tokyo's $17 Private CAPSULE Room - YouTube 2024, Marec
Anonim

Jeden z najlepších spôsobov, ako urýchliť svoju webovú aplikáciu, je umožniť ukladanie do pamäte ukladania do pamäte vo vašej databáze, ktoré ukladá do pamäte bežne používané SQL dotazy v pamäti pre prakticky okamžitý prístup na ďalšiu stránku, ktorá robí rovnakú požiadavku.

Dôvodom, prečo je táto metóda taká silná, je, že nemusíte robiť žiadne zmeny vo vašej webovej aplikácii, stačí len obetovať trochu pamäti. To nebude riešiť všetky vaše problémy, ale rozhodne nemôže ublížiť.

Poznámka: ak vaša aplikácia často aktualizuje tabuľky, potom sa bude cache dopytu neustále odstraňovať a z toho nedostanete nič. Je to ideálne pre aplikáciu, ktorá väčšinou číta proti databáze, napríklad blogu WordPress. To tiež nefunguje, ak používate zdieľaný hosting.

Povoliť ukladanie do vyrovnávacej pamäte s spustením servera

Prvá vec, ktorú budete chcieť urobiť, je uistiť sa, že vaša inštalácia MySQL má v skutočnosti podporu dotazu na ukladanie do vyrovnávacej pamäte. Väčšina distribúcií to robí, ale mali by ste tak skontrolovať.

Tento príkaz budete chcieť spustiť z konzoly MySQL, ktorá vám povie, či je k dispozícii možnosť ukladania do pamäte cache.

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

Nerobte toto, pretože znamená, že ukladanie do vyrovnávacej pamäte je skutočne povolené, pretože väčšina poskytovateľov hostingu to predvolene nepovolí. Zvláštne, moja inštalácia Ubuntu Feisty už jej umožnila …

Ďalej budeme musieť skontrolovať a zistiť, či je povolené ukladanie do pamäte cache. Musíme skontrolovať viac ako jednu premennú, takže môžeme všetko urobiť naraz tak, že skontrolujeme premennú dotazu%

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

Tu sú dôležité položky v zozname a čo znamenajú:

  • query_cache_size - Toto je veľkosť vyrovnávacej pamäte v bajtoch. Nastavenie tejto hodnoty na hodnotu 0 účinne zakáže ukladanie do vyrovnávacej pamäte.
  • query_cache_type - Táto hodnota musí byť zapnutá alebo 1 pre ukladanie do pamäte dotazu, aby bola povolená predvolená hodnota.
  • query_cache_limit - Toto je dopyt maximálnej veľkosti (v bajtoch), ktorý bude uložený do vyrovnávacej pamäte.

Ak je hodnota query_cache_size nastavená na hodnotu 0 alebo ju chcete len zmeniť, budete musieť spustiť nasledujúci príkaz, pričom treba mať na pamäti, že hodnota je v bajtoch. Napríklad, ak ste chceli prideliť 8MB do vyrovnávacej pamäte, použili sme hodnotu 1024 * 1024 * 8 = 8388608.

SET GLOBAL query_cache_size = 8388608;

Podobne môžu byť ďalšie možnosti nastavené rovnakou syntaxou:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Ako teraz môžeme povedať, či skutočne funguje? Môžete použiť príkaz SHOW STATUS na vytiahnutie všetkých premenných, ktoré začínajú "Qc", aby ste sa pozreli na to, čo sa deje pod kapotou.

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)

V štatistikách si všimnete, že mám dostatok voľnej pamäte. Ak váš server zobrazí množstvo sliviek lowmem, možno budete musieť zvážiť zvýšenie tejto hodnoty, ale nepoužíval by som príliš veľa pamäte pri ukladaní do pamäte dotazovania pre webový server … musíte mať k dispozícii pamäť pre apache, php, ruby alebo bez ohľadu na to, čo používate.

Povoliť v súbore Config

Ak chcete, aby tieto zmeny prežili reštart alebo reštart mysql servera, musíte ich pridať do konfiguračného súboru /etc/mysql/my.cnf pre MySQL. Upozorňujeme, že to môže byť na inom mieste vašej inštalácie.

Otvorte súbor pomocou textového editora v režime sudo alebo root a potom pridajte tieto hodnoty, ak v súbore ešte neexistujú. Ak existujú, stačí ich rozdeliť.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Dátovanie do vyrovnávacej pamäte môže výrazne zlepšiť rýchlosť vašej webovej aplikácie, najmä ak vaša aplikácia väčšinou číta. Monitorujte stav pomocou vyššie uvedených metód a zistite, ako to funguje v priebehu času.

Odporúča: