Testuję szybkość niektórych zapytań w MySQL. Baza danych buforuje te zapytania, co utrudnia uzyskanie wiarygodnych wyników podczas testowania szybkości tych zapytań.
Czy istnieje sposób na wyłączenie buforowania dla zapytania?
System: MySQL 4 na webhostingu Linux, mam dostęp do PHPMyAdmin.
Dzięki
Inna alternatywa, która wpływa tylko na bieżące połączenie:
źródło
query_cache_size
patrzyłem na toquery_cache_type
. Mieszałem odpowiedź twoją i SeniorDev.Wszelkie odniesienia do bieżącej daty / godziny wyłączą pamięć podręczną zapytań dla tego wyboru:
Zobacz „Wymagania wstępne i uwagi dotyczące użycia pamięci podręcznej zapytań MySQL” @ http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html
źródło
Istnieje również opcja konfiguracji: rozmiar_pamięci_podstawowej = 0
Zobacz http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
źródło
Możesz także uruchomić polecenie follow, aby zresetować pamięć podręczną zapytań.
źródło
Jeden problem z
Metoda polega na tym, że wydaje się, że zapobiega tylko buforowaniu wyniku zapytania. Jeśli jednak odpytujesz bazę danych, która jest aktywnie używana z zapytaniem, które chcesz przetestować, inni klienci mogą buforować twoje zapytanie, wpływając na wyniki. Nadal szukam sposobów na obejście tego, edytuję ten post, jeśli go wymyślę.
źródło
Użyłbym następujących:
źródło
Użycie zmiennej zdefiniowanej przez użytkownika w zapytaniu powoduje, że kwerenda jest ponownie nieczytelna. Uważam, że jest to znacznie lepszy wskaźnik niż używanie
SQL_NO_CACHE
. Ale powinieneś umieścić zmienną w miejscu, w którym ustawienie zmiennej nie miałoby poważnego wpływu na wydajność:źródło
SQL_NO_CACHE
”. Jak to? Wydaje się, że potrzebujesz dość mocnego argumentu za użyciem niejasnego hackowania nad jawnym słowem kluczowym, chyba że jawne słowo kluczowe nie robi tego, co twierdzi.Jeśli chcesz wyłączyć pamięć podręczną zapytań, ustaw opcję „rozmiar_pamięci_pytania” na 0 w pliku konfiguracyjnym mysql. Jeśli ustawiona wartość 0 mysql nie będzie używać bufora zapytań.
źródło