Zrychlete svůj web pomocí ukládání dotazů do MySQL dotazů

Video: Zrychlete svůj web pomocí ukládání dotazů do MySQL dotazů

Video: Zrychlete svůj web pomocí ukládání dotazů do MySQL dotazů
Video: Harry Potter hraje POKÉMON GO! (parodie) 2024, Březen
Zrychlete svůj web pomocí ukládání dotazů do MySQL dotazů
Zrychlete svůj web pomocí ukládání dotazů do MySQL dotazů
Anonim

Jedním z nejlepších způsobů, jak urychlit vaši webovou aplikaci, je povolit ukládání dotazu do paměti cache ve vaší databázi, která ukládá běžně používané dotazy SQL do paměti pro prakticky okamžitý přístup na další stránku, která dělá stejnou žádost.

Důvodem, proč je tato metoda tak silná, je to, že nemusíte provádět žádné změny ve své webové aplikaci, prostě musíte obětovat trochu paměti. To neopraví všechny vaše problémy, ale určitě to nemůže ublížit.

Poznámka: Pokud vaše aplikace často aktualizuje tabulky, mezipaměť dotazů bude neustále vyčištěna a nebudete mít z toho mnoho. To je ideální pro aplikaci, která většinou čte proti databázi, například blogu WordPress. To také nebude fungovat, pokud používáte sdílený hosting.

Povolit ukládání do mezipaměti pomocí spouštění serveru

První věc, kterou budete chtít udělat, je zajistit, aby instalace MySQL skutečně obsahovala podporu dotazu pro ukládání do mezipaměti. Většina distribucí je, ale stejně byste měli zkontrolovat.

Tento příkaz budete chtít spustit z konzoly MySQL, která vám řekne, zda je k dispozici mezipaměť dotazu.

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

Nezamýšlejte tím, že je zapotřebí ukládání do mezipaměti dotazů, protože většina hostitelských poskytovatelů tuto možnost ve výchozím nastavení nepovolí. Je trochu zvláštně, že moje instalace Ubuntu Feisty ji již umožnila …

Dále budeme muset zkontrolovat a zjistit, zda je povoleno ukládání do mezipaměti dotazů. Potřebujeme zkontrolovat více než jednu proměnnou, abychom mohli udělat vše najednou tak, že zkontrolujeme proměnnou 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 | +------------------------------+---------+

Zde jsou důležité položky v seznamu a jejich význam:

  • query_cache_size - Toto je velikost mezipaměti v bajtech. Nastavení této hodnoty na 0 bude účinně deaktivovat ukládání do mezipaměti.
  • query_cache_type - Tato hodnota musí být zapnuta nebo 1 pro ukládání dotazů do mezipaměti.
  • query_cache_limit - Jedná se o dotaz maximální velikosti (v bajtech), který bude uložen do mezipaměti.

Pokud je hodnota query_cache_size nastavena na hodnotu 0 nebo ji chcete změnit, budete muset spustit následující příkaz, přičemž nezapomeňte, že hodnota je v bajtech. Například pokud byste chtěli přidělit 8MB do mezipaměti, použijeme jako hodnotu hodnotu 1024 * 1024 * 8 = 8388608.

SET GLOBAL query_cache_size = 8388608;

Podobně mohou být další možnosti nastaveny stejnou syntaxí:

SET GLOBAL query_cache_limit = 1048576;

SET GLOBAL

query_cache_type

= 1;

Teď jak můžeme říci, zda skutečně funguje? Pomocí příkazu SHOW STATUS můžete vytáhnout všechny proměnné, které začínají "Qc", abyste se podívali na to, co se děje 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)

Ve statistikách si všimnete, že mám spoustu volné paměti. Pokud váš server zobrazuje spoustu nízkých prstenů, možná budete muset uvažovat o zvýšení této hodnoty, ale neudělal bych příliš mnoho paměti pro ukládání dotazů do webového serveru … potřebujete mít k dispozici paměť pro apache, php, ruby nebo bez ohledu na to, co používáte.

Povolit v souboru Config

Pokud chcete, aby tyto změny přežily restartování nebo restartování serveru mysql, je třeba je přidat do konfiguračního souboru /etc/mysql/my.cnf pro MySQL. Všimněte si, že se může nacházet na jiném místě ve vaší instalaci.

Otevřete soubor pomocí textového editoru v sudo nebo kořenovém režimu a přidejte tyto hodnoty, pokud v souboru již neexistují. Pokud existují, stačí je rozložit.

query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576

Ukládání do mezipaměti dotazu může výrazně zlepšit rychlost vaší webové aplikace, zejména pokud aplikace většinou čte. Monitorujte stav pomocí výše uvedených metod a zjistěte, jak to funguje v průběhu času.

Doporučuje: