sql >> Database >  >> RDS >> Mysql

Moet ik mijn innodb_buufer_pool _size/RAM opofferen om ruimte te maken voor query_cache_size ?

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.



  1. MySQL-replicatie:foutieve transacties in op GTID gebaseerde replicatie

  2. Roep pusher op wanneer mysql is gewijzigd

  3. Hoe u het grootste rendement uit uw Microsoft Access-database kunt halen

  4. Een lijst met partitieschema's retourneren in SQL Server (T-SQL)