W czerwcu 2014 odpowiedziałem https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796
W tym poście omówiłem, w jaki sposób InnoDB zarządza zmianami między pulą buforów InnoDB a pamięcią podręczną zapytań.
NIE KORZYSTAJĄC Z PAMIĘCI PODRĘCZNEJ ZAPYTAŃ
Najprostszą odpowiedzią byłoby wyłączenie pamięci podręcznej zapytań, ale jest pewien haczyk:musisz ustawić oba query_cache_size i query_cache_type do zera(0).
Jeśli nie ustawisz query_cache_type do zera (0) mikrozarządzanie zmianami nadal zachodzi. Potwierdza to paragraf 8 MySQL Dokumentacja „Konfiguracja pamięci podręcznej zapytań” mówi
KORZYSTANIE Z PAMIĘCI PODRĘCZNEJ ZAPYTAŃ
Jeśli naprawdę chcesz korzystać z pamięci podręcznej zapytań, musisz przestudiować swoje dane. Zasadniczo musisz znać rozmiar swoich wyników. Następnie ustaw query_cache_limit i query_cache_min_res_unit aby pomieścić zestaw wyników średniego rozmiaru, a także zestaw wyników maksymalnego rozmiaru.
Alternatywnie możesz włączyć pamięć podręczną zapytań globalnie, ale wyłączyć jej użycie z sesji bazy danych, jak podano w Paragraf 9 :
TWOJE AKTUALNE PYTANIE
Pamięć podręczna zapytań, pula buforów InnoDB, wątki na połączenie (zobacz mój post https://dba.stackexchange.com/questions/16969/jak-costly-otwiera-i-zamykanie-połączenia-db/ 16973#16973 ) i system operacyjny konkurują o pamięć RAM.
Patrząc tylko na pamięć podręczną zapytań i pulę buforów InnoDB, musisz zobaczyć, ile miejsca jest wolne w puli buforów InnoDB po kilku dniach lub tygodniach działania MySQL.
Możesz uruchomić to zapytanie
SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';
Dzięki temu dowiesz się, o ile możesz obniżyć pulę buforów InnoDB. Możesz wtedy zwiększyć pamięć podręczną zapytań o ten rozmiar. Jeśli to zapytanie zwraca mniej niż 1024, prawdopodobnie nie jest warte wysiłku. Dostaniesz dodatkowe miejsce z pamięci RAM lub po prostu wyłączysz pamięć podręczną zapytań.