Optymalizacja bazy danych WordPress, jak przyspieszyć stronę?
PL

Optymalizacja bazy danych WordPress, jak przyspieszyć stronę?

Ostatnio zweryfikowano: 6 sierpnia 2026
5 min czytania
Przewodnik

WordPress przechowuje wszystko w bazie danych MySQL (lub MariaDB). Z czasem baza ta “puchnie”, gromadząc zbędne dane, co może spowalniać zapytania i całą stronę. Większa baza to dłuższy czas wykonywania backupu, wolniejsze zapytania SELECT i dłuższy Time To First Byte (TTFB).

W tym kompleksowym poradniku dla developerów przejdziemy przez zaawansowaną optymalizację bazy danych, od prostego czyszczenia, przez analizę zapytań, aż po konfigurację silnika InnoDB.


#Dlaczego optymalizacja bazy danych jest krytyczna w 2026?

W 2026 roku, kiedy standardem jest TTFB poniżej 100ms, “ciężka” baza danych jest kotwicą dla Twojej strony. Nawet jeśli masz super szybki serwer (PHP 8.4, NVMe), źle zoptymalizowane zapytania SQL mogą zabić wydajność.

#Główne przyczyny problemów z bazą:

  1. Bloatware (Nadmiar danych): Rewizje wpisów, spam komentarzy, osierocone metadane.
  2. Autoloaded Options: Dane ładowane przy każdym odświeżeniu strony, nawet jeśli nie są używane.
  3. Brak indeksów: Zapytania, które muszą skanować całą tabelę (Full Table Scan).
  4. Fragmentacja tabel: Luki w danych, które zwiększają rozmiar pliku na dysku.

#Część 1: Higiena bazy danych (oczyszczanie)

Zacznijmy od usunięcia śmieci. Możesz to zrobić wtyczką (WP-Optimize), ale jako developer powinieneś wiedzieć, jak to zrobić “na piechotę” za pomocą SQL lub WP-CLI.

#1. Rewizje wpisów (post revisions)

Każde kliknięcie “Zapisz szkic” tworzy nową kopię wpisu. Przy długiej edycji jednego artykułu możesz mieć setki rewizji.

Zapytanie SQL do sprawdzenia liczby rewizji:

SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision';

Usuwanie rewizji (SQL):

DELETE FROM wp_posts WHERE post_type = 'revision';

Zalecane: Użyj WP-CLI (Bezpieczniej):

wp post delete $(wp post list --post_type='revision' --format=ids) --force

#2. Oczyszczanie spamu i kosza

Nie ma sensu trzymać spamu ani usuniętych postów.

SQL:

DELETE FROM wp_comments WHERE comment_approved = 'spam';
DELETE FROM wp_comments WHERE comment_approved = 'trash';

#3. Transients (dane tymczasowe)

Transients to cache zapisywany w bazie (wp_options). Czasem wygasłe transienty nie są usuwane automatycznie.

SQL czyszczący wygasłe transienty:

DELETE FROM wp_options WHERE option_name LIKE ('_transient_timeout%') OR option_name LIKE ('_transient_%');

WP-CLI (Najlepsza metoda):

wp transient delete --all

#Część 2: Autoloaded options (cichy zabójca wydajności)

Tabela wp_options zawiera kolumnę autoload. Jeśli jest ustawiona na yes, dana opcja jest ładowana przy każdym wczytaniu strony. Wtyczki często zostawiają tu śmieci po odinstalowaniu.

#Jak zdiagnozować problem?

Sprawdź, ile danych (w bajtach) jest ładowanych automatycznie:

SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload = 'yes';

Jeśli wynik przekracza 800 KB - 1 MB, masz problem.

#Jak znaleźć największe opcje?

SELECT option_name, LENGTH(option_value) as option_size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY option_size DESC
LIMIT 10;

Często znajdziesz tu stare dane z wtyczek cache, builderów czy logów. Jeśli wtyczka nie jest już używana, możesz bezpiecznie usunąć te opcje lub zmienić autoload na no.


#Część 3: InnoDB vs MyISAM

W 2026 roku nie powinieneś już używać silnika MyISAM. InnoDB jest standardem, który oferuje:

  • Blokowanie na poziomie wiersza (Row-level locking): MyISAM blokuje całą tabelę przy zapisie.
  • Transakcyjność (ACID): Bezpieczeństwo danych.
  • Foreign Keys: Spójność relacji.

#Sprawdź silnik tabel:

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'twoja_nazwa_bazy';

#Konwersja na InnoDB:

Jeśli znajdziesz tabele MyISAM, skonwertuj je:

ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_comments ENGINE=InnoDB;
ALTER TABLE wp_options ENGINE=InnoDB;
-- i tak dalej dla wszystkich tabel

#Część 4: Indeksowanie (dla zaawansowanych)

WordPress domyślnie ma dobre indeksy, ale wtyczki często dodają własne tabele bez odpowiednich indeksów. Brak indeksu przy zapytaniu WHERE lub JOIN oznacza, że MySQL musi przeszukać każdy wiersz tabeli.

#Przykład: Wolne wyszukiwanie w WooCommerce

Jeśli masz sklep z 100 000 zamówień, a wtyczka szuka zamówień po meta_key bez indeksu, strona “Moje konto” może ładować się 10 sekund.

Rozwiązanie: Dodaj indeksy do kolumn, po których często wyszukujesz lub sortujesz.

CREATE INDEX idx_meta_key_value ON wp_postmeta (meta_key(191), meta_value(50));

(Uwaga: Indeksowanie meta_value jest trudne, bo to TEXT. Lepiej unikać szukania po meta_value, jeśli to możliwe).


#Część 5: Zapobieganie problemom (konfiguracja wp-config.php)

Zamiast ciągle sprzątać, lepiej nie brudzić. Skonfiguruj WordPressa mądrze.

#Ogranicz rewizje

Dodaj do wp-config.php:

// Ogranicz do 5 ostatnich wersji
define( 'WP_POST_REVISIONS', 5 );

// Opróżniaj kosz co 7 dni (domyślnie 30)
define( 'EMPTY_TRASH_DAYS', 7 );

// Wydłuż czas autosave (mniej requestów AJAX w edytorze)
define( 'AUTOSAVE_INTERVAL', 300 ); // sekundy

#Wyłącz edytor plików

Dla bezpieczeństwa i higieny:

define( 'DISALLOW_FILE_EDIT', true );

#Część 6: Narzędzia do monitorowania (query monitor)

Nie zgaduj, co spowalnia stronę. Zainstaluj wtyczkę Query Monitor. Po instalacji, w pasku admina zobaczysz czas generowania strony i liczbę zapytań SQL.

  1. Kliknij w statystyki w pasku.
  2. Przejdź do zakładki “Queries”.
  3. Sortuj po “Time”.

Jeśli widzisz zapytanie, które trwa 0.5s lub więcej, to Twój cel do optymalizacji. Często pochodzi ono że źle napisanej wtyczki (“Niedawno oglądane produkty”, “Licznik odwiedzin”, itp.).


#Podsumowanie: Lista kontrolna optymalizacji

  1. Backup: Zawsze wykonaj kopię przed pracami na bazie.
  2. Silnik: Upewnij się, że wszystkie tabele to InnoDB.
  3. Autoload: Sprawdź rozmiar autoloaded options (celuj < 800KB).
  4. Czyszczenie: Usuń rewizje, spam i wygasłe transienty.
  5. Indeksy: Sprawdź, czy ciężkie zapytania używają indeksów.
  6. Prewencja: Skonfiguruj wp-config.php, by ograniczyć tworzenie śmieci.

Kiedy Twoja baza jest lekka i szybka, PHP zużywa mniej pamięci, a użytkownicy dostają treść błyskawicznie. To podstawa nowoczesnego WordPressa.

Potrzebujesz pomocy z optymalizacją bazy danych? Jako specjalista WordPress wykonuję profesjonalne audyty i optymalizację. Sprawdź cennik usług WordPress.

Następny krok

Przekuj artykuł w realne wdrożenie

Pod tym wpisem dokładam linki, które domykają intencję użytkownika i prowadzą dalej w strukturze serwisu.

Chcesz wdrożyć ten temat na swojej stronie?

Jeśli problemem są Core Web Vitals, wolny frontend albo ciężki WordPress, rozpiszę i wdrożę konkretny plan optymalizacji.

FAQ do artykułu

Często zadawane pytania

Najważniejsze odpowiedzi, które pomagają wdrożyć temat w praktyce.

SEO-readyGEO-readyAEO-ready5 Q&A
Jakie są główne przyczyny wolnej bazy danych WordPressa?#
Główne przyczyny to nadmiar rewizji wpisów, spam w komentarzach, wygasłe transienty, opcje autoload po odinstalowanych wtyczkach, tabele w silniku MyISAM oraz brak indeksów na często odpytywanych kolumnach.
Jaki rozmiar powinny mieć opcje autoload?#
Opcje autoload nie powinny przekraczać łącznie 800KB-1MB. Po przekroczeniu tego progu znajdź największe wpisy i zmień flagę autoload na 'no' albo usuń te, które należą do nieaktywnych wtyczek.
Używać MyISAM czy InnoDB w 2026?#
InnoDB to obowiązkowy standard w 2026. Daje blokowanie na poziomie wiersza (MyISAM blokuje całą tabelę), transakcje ACID i klucze obce. Przekonwertuj wszystkie tabele MyISAM na InnoDB.
Jak często czyścić bazę danych WordPressa?#
Zaplanuj automatyczne cotygodniowe czyszczenie sesji i transientów oraz pełniejsze porządki raz w miesiącu, obejmujące rewizje, spam, optymalizację tabel i weryfikację opcji autoload.
Jakie narzędzie najlepiej monitoruje wolne zapytania?#
Query Monitor to podstawowa wtyczka. Pokazuje każde zapytanie SQL, czas jego wykonania, plik, który je wywołał, oraz to, czy korzysta z indeksów. Zainstaluj ją na środowisku deweloperskim lub staging i użyj do namierzenia wąskich gardeł.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotujemy wersję pod Twoje cele biznesowe.

Porozmawiajmy

Polecane artykuły