In juni 2014 antwoordde ik https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796
In dat bericht besprak ik hoe InnoDB microbeheer veranderingen tussen de InnoDB Buffer Pool en de Query Cache.
DE QUERY CACHE NIET GEBRUIKEN
Het eenvoudigste antwoord zou zijn om gewoon de querycache uit te schakelen, maar er is een addertje onder het gras:je moet beide instellen query_cache_size en query_cache_type naar nul (0).
Als u query_cache_type tot nul (0), vindt het microbeheer van wijzigingen nog steeds plaats. Dit wordt geverifieerd door wat de paragraaf 8 van de MySQL Documentatie "Query Cache Configuratie" zegt
DE QUERY CACHE GEBRUIKEN
Als u de Query Cache echt wilt gebruiken, moet u uw gegevens bestuderen. Kortom, u moet de grootte van uw resultaten weten. U stelt dan query_cache_limit in en query_cache_min_res_unit om tegemoet te komen aan de resultatenset van gemiddelde grootte en de resultatenset met maximale grootte.
Als alternatief kunt u de Query Cache globaal inschakelen, maar het gebruik ervan uitschakelen vanuit uw DB-sessie zoals vermeld in Paragraaf 9 :
UW WERKELIJKE VRAAG
De querycache, InnoDB-bufferpool, threads per verbinding (zie mijn bericht https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973 #16973 ), en het besturingssysteem strijden allemaal om RAM.
Als u alleen naar de Query Cache en de InnoDB Buffer Pool kijkt, moet u zien hoeveel ruimte er vrij is in de InnoDB Buffer Pool nadat MySQL dagen of weken heeft gedraaid.
U kunt deze query uitvoeren
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
Dit zal u vertellen hoeveel u de InnoDB Buffer Pool kunt verlagen. Je zou dan de Query Cache met die grootte kunnen vergroten. Als deze query minder dan 1024 retourneert, is het waarschijnlijk niet de moeite waard. Je zult ofwel de extra ruimte uit het RAM moeten halen of gewoon de Query Cache uitschakelen.