MySQL posiada ciekawy mechanizm, który odpowiednio wykorzystany może znacznie przyspieszyć czas wykonywania się zapytań. Mechanizm ten to cache zapytań (query cache), a sprowadza się on do tego, że MySQL przeznacza pewną ilość pamięci na przechowywanie wyników zapytań. Działa to tak, że do cache trafia informacja o jakie zapytanie chodzi i jaki wynik zwróciło. Każde zapytanie jest sprawdzane pod kontem tego, czy jego wynik nie znajduje się w cache. Jeśli tak jest, wynik jest pobierany i przesyłany do klienta bez konieczności wykonywania całego zapytania. Jeśli nie, zapytanie jest normalnie wykonywane. Co ważne, w standardowej wersji MySQL porównywana jest cała treść zapytania. W efekcie zapytanie:

SELECT /* komentarz */ * FROM tabela WHERE kolumna='optymizacja';

jest innym zapytaniem niż:

SELECT * FROM tabela WHERE kolumna='optymizacja';

pomimo, że różnią się one tylko komentarzem. Zmodyfikowane wersje MySQL (jak na przykład Percona Server) potrafią sobie z komentarzami radzić, usuwając je po prostu przed sprawdzaniem cache. Co jest oczywiste, pobranie wyniku z cache jest rozwiązaniem szybszym niż wykonywanie całego zapytania, wydawałoby się, że zwiększanie query cache jest znakomitym sposobem na poprawę wydajności serwera MySQL. Czy tak jest faktycznie?
czytaj dalej…