Jedním z nejlepších způsobů, jak urychlit vaše webové aplikace je umožnit ukládání do vyrovnávací paměti dotazů v databázi, která ukládá běžně používané SQL dotazů v paměti pro téměř okamžitý přístup na další stránku, která dělá stejnou žádost.
Důvodem této metody je tak silný, že není nutné provádět žádné změny svých webových aplikací, stačí obětovat trochu paměti. Nebude to opravit všechny vaše problémy, ale rozhodně to nemůže ublížit.
Poznámka: Pokud vaše aplikace aktualizací tabulky často, pak cache bude neustále očištěn a nebudete moc ani využít. To je ideální pro aplikace, která se většinou čte s databází, jako je například WordPress blog. To také nebude fungovat, pokud je spuštěn na sdílený hosting.
Povolit ukládání do mezipaměti u serveru se službou
První věc, kterou budete chtít udělat, je zajistit, aby vaše instalace MySQL má ve skutečnosti dotaz cache podporu. Většina distribucí, ale měli byste zkontrolovat stejně.
Budete chtít spustit tento příkaz z konzoly MySQL, který vám řekne, zda dotaz do mezipaměti je k dispozici.
mysql> show variables like 'have_query_cache'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | have_query_cache | YES | +------------------+-------+
Nejsou to chybu v tom smyslu, že dotaz je vlastně povoleno ukládání do mezipaměti, protože většina poskytovatelů hostingu nebudete k tomu, aby to ve výchozím nastavení. Zvláštně dost, instalaci Ubuntu Feisty už je povolena ...
Dále budete muset zkontrolovat a zjistit, zda dotaz do mezipaměti je povoleno. Budeme muset zkontrolovat více než jednu proměnnou, takže můžeme také udělat všechno najednou a kontrolovat proměnné 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 je důležité položky v seznamu a jejich význam:
- query_cache_size - to je velikost vyrovnávací paměti v bajtech. Nastavení této hodnoty na 0 bude účinně zakázat ukládání do vyrovnávací paměti.
- query_cache_type - Tato hodnota musí být ON nebo 1 na dotaz caching k výchozím nastavení povolena.
- query_cache_limit - to je maximální velikost dotaz (v bajtech), které budou do mezipaměti.
Pokud je hodnota query_cache_size je nastavena na 0, nebo si jen chcete změnit, musíte spustit následující příkaz, přičemž má na paměti, že hodnota je v bytech. Například, pokud jste chtěli rozdělit do cache 8MB. Bychom použít 1024 * 1024 * 8 = 8388608 jako hodnotu.
SET GLOBAL query_cache_size = 8388608;
Stejně tak může být další možnosti se stejnou syntaxí:
SET GLOBAL query_cache_limit = 1048576;SET GLOBALquery_cache_type
= 1;
Nyní, jak si řekneme, jestli je to vlastně funguje? Můžete použít příkaz SHOW STATUS vytáhnout všechny proměnné, které začínají s "QC", aby se podíval 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)
Určitě jste si všimli, že ve statistikách mám spoustu volného místa odešel. Pokud váš server ukazuje mnoho sušených švestek použil agresivnější nízkopaměťový režim, možná budete muset uvažovat o zvýšení této hodnoty, ale já bych trávit příliš mnoho místa na dotaz cache pro web server ... musíte nechat volné paměti pro Apache, PHP, Ruby, nebo co, který používáte.
Povolit v konfiguračním souboru
Pokud si chcete tyto změny přežít restart nebo restart serveru MySQL, musíte přidat do souboru / etc / mysql / my.cnf konfigurační soubor pro MySQL. Všimněte si, že to by mohlo být na jiném místě na instalaci.
Otevřete soubor pomocí textového editoru v sudo nebo root režimu, a pak přidejte tyto hodnoty, pokud nejsou již v souboru. Pokud existují, jen odkomentovat je.
query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576
Dotaz cache může výrazně zlepšit rychlost webové aplikace, zvláště pokud vaše aplikace se většinou čte. Sledovat stav pomocí výše uvedených metod a zjistit, jak to funguje v čase.
0 commentaires:
Enregistrer un commentaire