Przejdź do głównej treści
Wróć do bloga
Inne 8 min czytania

Jak zdiagnozować i wyeliminować wolne zapytania bazy danych na stronie firmowej

27 czerwca 2026 Michał Kasprzyk Aktualizacja: 2 lipca 2026

Strona ładuje się kilka sekund. Panel WordPressa reaguje z opóźnieniem. Hosting co kilka miesięcy wysyła ostrzeżenie o przekroczeniu limitu zasobów. Właściciele firm często tłumaczą te objawy słabym serwerem i instalują kolejną wtyczkę cache. Tymczasem prawdziwa przyczyna leży głębiej: w zapytaniach, które strona wysyła do bazy danych przy każdym odświeżeniu.

Ten artykuł wyjaśnia, jak rozpoznać problem wolnych zapytań bez wiedzy programistycznej, dlaczego cache go nie rozwiązuje i jakie kroki podejmować, by strona działała stabilnie.

Co to są wolne zapytania bazy danych i dlaczego obciążają serwer

Każda strona oparta na WordPressie przechowuje treści w bazie danych MySQL lub MariaDB. Za każdym razem, gdy ktoś otwiera stronę, WordPress wykonuje od kilkudziesięciu do kilkuset zapytań (queries), aby pobrać wpisy, opcje motywu, ustawienia wtyczek i metadane.

Pojedyncze zapytanie trwa zazwyczaj poniżej milisekundy. Problem pojawia się, gdy:

  • zapytanie skanuje dużą tabelę bez indeksu — baza musi przejrzeć tysiące wierszy, by znaleźć jeden wynik;
  • wtyczka wykonuje dziesiątki zapytań w pętli — np. popularny widget „ostatnie wpisy" z dodatkowymi polami ACF uruchamia osobne zapytanie dla każdego wpisu;
  • tabela opcji (wp_options) rośnie do kilkuset megabajtów — WordPress ładuje opcje autoryzowane przy każdym żądaniu, nawet te niepotrzebne na danej podstronie;
  • zapytanie zawiera złączenia wielu tabel (JOIN) bez odpowiednich indeksów — serwer bazy danych buduje tymczasowe tabele na dysku.

Wynik: jedno żądanie HTTP generuje 200–500 ms czasu bazy danych. Przy 20 jednoczesnych odwiedzających serwer traci zdolność do obsługi nowych połączeń. Strona staje się powolna dla wszystkich.

Jak rozpoznać, że problemem są zapytania bazy danych — bez pisania kodu

Nie musisz umieć programować, by podejrzewać wolne zapytania. Poniższe objawy wskazują na problem warstwy bazy danych, a nie na słaby serwer czy duże obrazy.

1. Strona jest wolna, ale statyczne zasoby ładują się szybko

Otwórz narzędzie deweloperskie w przeglądarce (F12 → zakładka Network). Jeśli obrazy, CSS i JavaScript ładują się w mniej niż sekundę, ale dokument HTML czeka 2–5 sekund na odpowiedź serwera (TTFB — Time to First Byte), problem leży po stronie serwera, najczęściej w bazie danych.

2. Panel WordPressa działa wolniej niż front strony

Panel admina nie korzysta z cache. Jeśli wp-admin reaguje z wyraźnym opóźnieniem (powyżej 3 sekund na otworzenie listy wpisów), to znaczy, że baza danych nie nadąża z zapytaniami.

3. Hosting raportuje przekroczenie limitu zapytań lub procesora

Większość współdzielonych hostingów (np. nazwa.pl, home.pl, LH.pl) ma limity jednoczesnych zapytań MySQL lub procentowego użycia CPU. Komunikaty typu „MySQL max_connections reached" lub „CPU limit exceeded" to sygnał, że strona generuje zbyt dużo zapytań lub są one zbyt kosztowne.

4. Strona przyspiesza po wyczyszczeniu bazy, ale po kilku dniach zwalnia ponownie

To klasyczny objaw tabeli wp_options zapełnionej transientami (tymczasowymi danymi cache wtyczek), które nie są automatycznie usuwane. Ręczne czyszczenie daje efekt tymczasowy — problem powraca, bo wtyczki nadal generują te same zapytania.

Dlaczego instalowanie kolejnych wtyczek cache nie rozwiązuje problemu

Wtyczki cache (WP Super Cache, W3 Total Cache, LiteSpeed Cache) tworzą statyczną wersję strony i omijają bazę danych dla zalogowanych użytkowników. To działa w określonych warunkach, ale ma istotne ograniczenia:

  • Cache nie działa dla panelu admina — administrator i redaktorzy nadal obciążają bazę;
  • Cache omija zapytania, ale ich nie eliminuje — przy pierwszym odświeżeniu cache lub po zmianie treści WordPress wykonuje pełen zestaw wolnych zapytań;
  • Każda wtyczka cache dodaje własne zapytania i transienty — paradoksalnie zwiększa obciążenie bazy;
  • Złożone reguły cache (wykluczenia, dynamiczne fragmenty) same stają się źródłem problemów — konfiguracja bywa skomplikowana i podatna na błędy.

Cache to opatrunek, nie leczenie. Jeśli baza wykonuje 300 zapytań na żądanie, cache ukrywa ten fakt przed gościem, ale serwer nadal wykonuje tę pracę przy każdym odświeżeniu cache. Przy wzroście ruchu problem wraca.

Jak zdiagnozować wolne zapytania — konkretne narzędzia i kroki

Krok 1: Zainstaluj wtyczkę Query Monitor

Query Monitor to darmowa wtyczka, która nie wymaga wiedzy programistycznej do podstawowej diagnozy. Po instalacji na pasku admina pojawi się pasek z liczbą zapytań i czasem ich wykonania.

Co sprawdzić:

  • Queries by Component — pokazuje, która wtyczka lub motyw generuje najwięcej zapytań;
  • Queries by Caller — wskazuje funkcję, która uruchomiła kosztowne zapytanie (nazwa wtyczki jest zazwyczaj czytelna);
  • Time — zapytania trwające powyżej 100 ms są oznaczone na czerwono. To one są problemem.

Jeśli widzisz, że jedna wtyczka generuje 60% zapytań, masz konkretny punkt zaczepienia.

Krok 2: Sprawdź rozmiar tabeli wp_options

W panelu hostingowym (phpMyAdmin lub Adminer) otwórz tabelę wp_options. Posortuj wiersze po rozmiarze kolumny option_value (typ LONGTEXT). Jeśli tabela ma dziesiątki tysięcy wierszy lub rozmiar powyżej 20 MB, WordPress ładuje niepotrzebne dane przy każdym żądaniu.

Typowi winowajcy:

  • transienty wtyczek cache i optymalizacji (zaczynają się od _transient_);
  • opcje zapisywane przez wtyczki SEO przy każdym zapisie wpisu;
  • dane z wtyczek statystycznych, które nie używają własnych tabel.

Krok 3: Sprawdź logi wolnych zapytań na serwerze

Jeśli hosting udostępnia logi MySQL (slow query log), włącz je tymczasowo. W cPanelu znajdziesz tę opcję w sekcji „MySQL". Log pokaże zapytania trwające powyżej ustalonego progu (np. 2 sekundy) wraz z czasem wykonania i liczbą przejrzanych wierszy.

Nie masz dostępu do logów na współdzielonym hostingu? To sam w sobie sygnał, że hosting nie daje narzędzi do diagnozy — i że audyt wydajności przeprowadzony przez specjalistę jest konieczny.

Krok 4: Przetestuj stronę po wyłączeniu podejrzanych wtyczek

Wyłącz po jednej wtyczce, które Query Monitor wskazał jako największych generatory zapytań. Po każdym wyłączeniu odśwież stronę i sprawdź czas TTFB (np. za pomocą WebPageTest lub PageSpeed Insights).

Jeśli po wyłączeniu konkretnej wtyczki TTFB spada z 3 s do 0,5 s, znalazłeś winowajcę.

Lista kontrolna: co sprawdzić przy wolnej stronie firmowej

Krok Co zrobić Oczekiwany wynik
1 Otwórz F12 → Network, sprawdź TTFB Poniżej 600 ms
2 Zainstaluj Query Monitor, sprawdź liczbę zapytań Poniżej 70 na żądanie
3 Sprawdź zapytania powyżej 100 ms Zero czerwonych pozycji
4 Sprawdź rozmiar wp_options w phpMyAdmin Poniżej 10 MB
5 Wyłącz podejrzane wtyczki po jednej TTFB spada poniżej 1 s
6 Sprawdź, czy hosting oferuje slow query log Tak — włącz na 48 h
7 Przetestuj na WebPageTest po każdej zmianie Potwierdzenie spadku TTFB

Jeśli po krokach 1–5 problem nie ustępuje, potrzebujesz audytu wydajności przeprowadzonego przez specjalistę, który przeanalizuje zapytania na poziomie kodu.

Dlaczego audyt wydajności jest skuteczniejszy niż dalsze instalowanie wtyczek

Audyt wydajności to systematyczne sprawdzenie warstwy bazy danych, konfiguracji serwera i architektury strony. Różni się od instalowania wtyczek tym, że:

  • identyfikuje przyczynę, a nie maskuje objaw — audytor ustala, które zapytanie jest wolne i dlaczego (brak indeksu, zła struktura zapytania, błąd wtyczki);
  • podaje konkretne rekomendacje — np. „dodać indeks na kolumnie meta_key w tabeli wp_postmeta" albo „usunąć wtyczkę X i zastąpić ją lżejszą alternatywą";
  • uwzględnia kontekst biznesowy — audytor wie, które funkcje strony są niezbędne dla firmy, a które można uprościć.

Wynikiem audytu jest raport z priorytetyzacją: co zmienić natychmiast (np. usunięcie wtyczki generującej 200 zapytań), co zaplanować na później (np. restrukturyzacja bazy), a co wymaga zmiany architektury.

Migracja na nowoczesny stack: dlaczego Astro + Cloudflare eliminuje problem u źródła

WordPress zyskał popularność dzięki łatwości zarządzania treścią, ale jego architektura — dynamiczne generowanie każdej strony z bazy danych przy każdym żądaniu — jest fundamentalnie obciążona problemem wolnych zapytań. Dodawanie cache to walka z architekturą, nie z nią.

Migracja na stack Astro + Keystatic + Cloudflare rozwiązuje problem inaczej:

  • Astro generuje statyczne pliki HTML w czasie budowania strony — gość otrzymuje gotowy plik, serwer nie wykonuje żadnego zapytania do bazy;
  • Keystatic pozwala zarządzać treścią z poziomu plików Markdown — nie ma tabeli wp_options, nie ma transientów, nie ma zapytań w pętli;
  • Cloudflare dostarcza sieć CDN i reguły cache na poziomie edge — strona jest serwowana z serwera najbliższego użytkownikowi, bez udziału bazy danych;
  • Koszty utrzymania spadają — brak bazy MySQL uruchomionej 24/7, brak wtyczek cache, brak limitów zapytań na współdzielonym hostingu.

Dla strony firmowej, która nie wymaga dynamicznych funkcji (sklep, portal społecznościowy), ten stack eliminuje klasę problemów z wolnymi zapytaniami całkowicie. Strona po prostu nie wykonuje zapytań do bazy w czasie obsługi odwiedzającego.

Więcej o korzyściach takiej migracji znajdziesz w artykule o migracji strony na Astro i Cloudflare.

Kiedy wystarczy audyt, a kiedy warto rozważyć migrację

Sytuacja Rekomendacja
Strona ma 10–15 podstron, rzadko aktualizowana Audyt + optymalizacja bazy może wystarczyć
WordPress obciążony przez 15+ wtyczek, TTFB powyżej 3 s Audyt, a przy braku poprawy — migracja
Hosting cyklicznie blokuje stronę za przekroczenie limitów Migracja na Astro + Cloudflare
Firma potrzebuje prostej strony, bez bloga na 1000 wpisów Migracja — brak uzasadnienia dla WordPressa
Strona to sklep (WooCommerce) lub portal z logowaniem Audyt + optymalizacja (Astro nie obsłuży logiki sklepu)

Podsumowanie

Wolne zapytania bazy danych to konkretny problem techniczny, który da się zdiagnozować bez wiedzy programistycznej — za pomocą Query Monitor, phpMyAdmin i pomiaru TTFB. Instalowanie kolejnych wtyczek cache ukrywa objawy, ale nie rozwiązuje przyczyny. Skuteczne działania to audyt wydajności (identyfikacja i usunięcie kosztownych zapytań) lub migracja na architekturę, która zapytań do bazy po prostu nie wykonuje w czasie obsługi odwiedzającego — taką jak Astro z Keystatic i Cloudflare.

Jeśli Twoja strona firmowa ładuje się powyżej 3 sekund, a hosting raportuje przekroczenia limitów — niezależnie od tego, ile wtyczek cache zainstalujesz — warto przeprowadzić audyt wydajności i sprawdzić, czy migracja na nowoczesny stack nie będzie rozwiązaniem trwalszym i tańszym w utrzymaniu. Skontaktuj się z nami, by omówić diagnozę Twojej strony.

👨‍💻

Michał Kasprzyk

Tworzę nowoczesne strony internetowe dla firm z całej Polski. Specjalizuję się w szybkich, bezpiecznych i zoptymalizowanych pod SEO witrynach.

Więcej o mnie

Powiązane artykuły

Inne

Obsługa błędów i ponawianie zapytań do API LLM w n8n: jak budować odporne automatyzacje AI

Dowiedz się, jak wdrożyć obsługę błędów i ponawianie zapytań do API LLM w n8n. Zabezpiecz automatyzacje AI przed błędami Rate Limit i awariami modeli.

Inne

Architektura agentów AI w n8n: Jak projektować systemy wieloagentowe zamiast pojedynczych promptów

Dowiedz się, jak budować zaawansowane systemy wieloagentowe w n8n. Poznaj modele sekwencyjne, koordynatorów i mechanizmy kontrolne dla stabilnych automatyzacji AI.

Inne

Szablony promptów i kontekst dynamiczny w n8n: jak budować elastyczne instrukcje dla modeli AI

Projektuj elastyczne szablony promptów w n8n i zarządzaj kontekstem dynamicznym w automatyzacjach AI. Poznaj praktyczne zasady budowy instrukcji dla LLM.

Potrzebujesz strony internetowej?

Skontaktuj się ze mną, aby omówić Twój projekt. Pierwsza konsultacja jest bezpłatna.

Zamów bezpłatną wycenę
Napisz na WhatsApp