Bereits im Juni 2014 antwortete ich https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796
In diesem Beitrag habe ich erläutert, wie InnoDB Änderungen zwischen dem InnoDB-Pufferpool und dem Abfrage-Cache mikroverwaltet.
DEN ABFRAGE-CACHE NICHT VERWENDEN
Die einfachste Antwort wäre, einfach den Abfrage-Cache zu deaktivieren, aber es gibt einen Haken:Sie müssen beide query_cache_size und query_cache_type auf Null (0).
Wenn Sie query_cache_type auf null(0), findet das Mikromanagement von Änderungen immer noch statt. Dies wird durch den Paragraph 8 des MySQL verifiziert Dokumentation "Query Cache Configuration" sagt
VERWENDUNG DES ABFRAGE-CACHES
Wenn Sie den Abfrage-Cache wirklich verwenden möchten, müssen Sie Ihre Daten studieren. Grundsätzlich müssen Sie die Größe Ihrer Ergebnisse kennen. Sie würden dann query_cache_limit festlegen und query_cache_min_res_unit um sowohl die Ergebnismenge mit durchschnittlicher Größe als auch die Ergebnismenge mit maximaler Größe aufzunehmen.
Alternativ können Sie den Abfrage-Cache global aktivieren, aber seine Verwendung von Ihrer DB-Sitzung aus deaktivieren, wie in Absatz 9 :
DEINE EIGENTLICHE FRAGE
Der Abfrage-Cache, der InnoDB-Pufferpool, Threads pro Verbindung (siehe meinen Beitrag https://dba.stackexchange.com/questions/16969/wie-kostspielig-ist-das-Öffnen-und-Schließen-einer-db-verbindung/ 16973#16973 ) und Betriebssystem konkurrieren um RAM.
Wenn Sie sich nur den Abfrage-Cache und den InnoDB-Pufferpool ansehen, müssen Sie sehen, wie viel Speicherplatz im InnoDB-Pufferpool frei ist, nachdem MySQL Tage oder Wochen gelaufen ist.
Sie können diese Abfrage ausführen
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
Dadurch erfahren Sie, um wie viel Sie den InnoDB-Pufferpool verringern können. Sie könnten dann den Abfrage-Cache um diese Größe erhöhen. Wenn diese Abfrage weniger als 1024 zurückgibt, lohnt sich der Aufwand wahrscheinlich nicht. Sie müssen entweder den zusätzlichen Speicherplatz aus dem RAM holen oder einfach den Abfrage-Cache deaktivieren.