sql >> Databáze >  >> RDS >> Mysql

Mám obětovat svůj innodb_buufer_pool _size/RAM, abych vytvořil prostor pro query_cache_size?

V červnu 2014 jsem odpověděl https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796

V tomto příspěvku jsem diskutoval o tom, jak InnoDB mikrospravuje změny mezi InnoDB Buffer Pool a Query Cache.

NEPOUŽÍVÁNÍ CACHE QUERY CACHE

Nejjednodušší odpovědí by bylo prostě zakázat mezipaměť dotazů, ale má to háček:Musíte nastavit obě velikost_cache_query_cache a query_cache_type na nulu (0).

Pokud nenastavíte query_cache_type na nulu(0), mikromanagement změn stále probíhá. To je ověřeno odstavcem 8 MySQL Dokumentace „Konfigurace mezipaměti dotazu“ říká

POUŽITÍ CACHE QUERY CACHE

Pokud opravdu chcete používat Query Cache, musíte si prostudovat svá data. V zásadě musíte znát velikost svých výsledků. Poté byste nastavili query_cache_limit a query_cache_min_res_unit aby se přizpůsobila výsledné sadě průměrné velikosti i sadě výsledků maximální velikosti.

Alternativně můžete mezipaměť dotazů povolit globálně, ale zakázat její používání z relace DB, jak je uvedeno v Odstavec 9 :

VAŠE SKUTEČNÁ OTÁZKA

Mezipaměť dotazů, fond vyrovnávací paměti InnoDB, vlákna podle připojení (viz můj příspěvek https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973#16973 ) a OS soutěží o RAM.

Když se podíváte pouze na Query Cache a InnoDB Buffer Pool, musíte vidět, kolik místa je volného místa v InnoDB Buffer Pool poté, co MySQL běží několik dní nebo týdnů.

Můžete spustit tento dotaz

SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';

To vám řekne, jak moc můžete snížit InnoDB Buffer Pool. Pak byste mohli zvýšit mezipaměť dotazů o tuto velikost. Pokud tento dotaz vrátí méně než 1024, pravděpodobně to nestojí za námahu. Buď budete muset získat další místo z paměti RAM, nebo jednoduše deaktivovat mezipaměť dotazů.



  1. Mysql VIEWS vs. PHP dotaz

  2. dynamický dotaz postgres

  3. SQL Server REPLACE() vs TRANSLATE():Jaké jsou rozdíly?

  4. Jak MySQL pracovat s rozlišením malých a velkých písmen a bez ohledu na přízvuk v UTF-8