Wyczyść pamięć podręczną zapytań MySQL bez ponownego uruchamiania serwera

162

Czy istnieje sposób na wyczyszczenie pamięci podręcznej zapytań mysql bez ponownego uruchamiania serwera mySQL?

Mahoor13
źródło

Odpowiedzi:

218

Uważam, że możesz użyć ...

RESET QUERY CACHE;

... jeśli użytkownik, którego używasz, ma prawa do ponownego ładowania. Alternatywnie możesz zdefragmentować pamięć podręczną zapytań za pomocą ...

FLUSH QUERY CACHE;

Aby uzyskać więcej informacji, zobacz sekcję Query Cache Status and Maintenance w podręczniku MySQL.

John Parker
źródło
27
RESET QUERY CACHE wyczyści pamięć podręczną zapytań, ale wymaga uprawnień RELOAD. FLUSH QUERY CACHE NIE czyści pamięci podręcznej zapytań, po prostu usuwa je z pamięci podręcznej, pozostawiając wyniki zapytań w pamięci podręcznej
carpii
To naprawdę pomogło. Używamy NodeJS z MySQL przy użyciu puli z 10 połączeniami. Mieliśmy do czynienia z problemem zapisywania danych przez jedno połączenie i odczytywania ich przez inne, a to było mocno buforowane. Ten wydaje się bardzo pomocny. Dzięki,
psuhas
2
Z jakiegoś powodu RESET QUERY CACHEwłaściwie to dla mnie nie wyjaśnia. Również restart serwera MySQL nie pomaga. Wyraźny sposób SELECT SQL_NO_CACHEzałatwia sprawę, ale nie RESET QUERY CACHE. sync && echo 3 | sudo tee /proc/sys/vm/drop_cachesz drugiej odpowiedzi też nie pomogło.
Jānis Elmeris
1
Restart maszyny też nie pomógł.
Jānis Elmeris
45

W moim systemie (Ubuntu 12.04) znalazłem, RESET QUERY CACHEa nawet ponowne uruchomienie serwera mysql nie wystarczyło. Było to spowodowane buforowaniem dysku pamięci .
Po każdym zapytaniu czyszczę pamięć podręczną dysku w terminalu:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

a następnie zresetuj pamięć podręczną zapytań w kliencie mysql:

RESET QUERY CACHE;
Leszek
źródło
2
Zauważ, że "Pamięć podręczna zapytań" w MySQL nie jest pamięcią podręczną stron / bloków. To pamięć podręczna wyników zapytań. Nie zawsze przydatne - nie używamy go. dev.mysql.com/doc/refman/5.6/en/query-cache.html
phil_w
@phil_w Czy istnieje sposób na zresetowanie pamięci podręcznej stron / bloków używanych przez mysql bez ponownego uruchamiania mysql i czyszczenia pamięci podręcznej systemu operacyjnego (linux)?
matanster