Nel giugno 2014 ho risposto a https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796
In quel post, ho discusso di come InnoDB microgestisce le modifiche tra InnoDB Buffer Pool e Query Cache.
NON USANDO LA CACHE DELLE QUERY
La risposta più semplice sarebbe disabilitare semplicemente la cache delle query, ma c'è un problema:devi impostare entrambi query_cache_size e query_cache_type a zero(0).
Se non imposti query_cache_type a zero(0), si verifica ancora la microgestione delle modifiche. Ciò è verificato da ciò che il Paragrafo 8 di MySQL Documentazione "Configurazione della cache delle query" dice
UTILIZZO DELLA CACHE DELLE QUERY
Se desideri davvero utilizzare la Query Cache, devi studiare i tuoi dati. Fondamentalmente, devi conoscere la dimensione dei tuoi risultati. Dovresti quindi impostare query_cache_limit e query_cache_min_res_unit per soddisfare il set di risultati di dimensioni medie e il set di risultati di dimensioni massime.
In alternativa, puoi abilitare la Query Cache a livello globale ma disabilitarne l'utilizzo dalla tua sessione database come indicato in Paragrafo 9 :
LA TUA EFFETTIVA DOMANDA
La cache delle query, il pool di buffer InnoDB, i thread di connessione (vedi il mio post https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973#16973 ) e il sistema operativo competono tutti per la RAM.
Quando si esaminano solo la Query Cache e il pool di buffer InnoDB, è necessario vedere quanto spazio è libero nel pool di buffer InnoDB dopo che MySQL è stato in esecuzione per giorni o settimane.
Puoi eseguire questa query
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
Questo ti dirà di quanto puoi ridurre il pool di buffer InnoDB. È quindi possibile aumentare la cache delle query di quella dimensione. Se questa query restituisce meno di 1024, probabilmente non ne vale la pena. Avrai lo spazio aggiuntivo dalla RAM o semplicemente disabilitando la Query Cache.