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ść.
Co spowalnia bazę danych WordPress?
- Bloatware (Nadmiar danych): Rewizje wpisów, spam komentarzy, osierocone metadane.
- Autoloaded Options: Dane ładowane przy każdym odświeżeniu strony, nawet jeśli nie są używane.
- Brak indeksów: Zapytania, które muszą skanować całą tabelę (Full Table Scan).
- Fragmentacja tabel: Luki w danych, które zwiększają rozmiar pliku na dysku.
Czyszczenie bazy danych WordPress z rewizji i spamu
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.
Jak usunąć rewizje wpisów
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) --forceJak usunąć spam i komentarze z 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';Jak usunąć wygasłe transienty
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 --allJak zmniejszyć autoload w tabeli wp_options
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 sprawdzić rozmiar autoload w bazie
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 z autoload
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.
Jak przekonwertować tabele MyISAM na InnoDB
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.
Jak sprawdzić silnik tabel w MySQL
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'twoja_nazwa_bazy';Jak zmienić silnik przez ALTER TABLE
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 tabelJak dodać indeksy MySQL w WordPressie
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.
Dlaczego wyszukiwanie zamówień w WooCommerce zwalnia bez indeksu?
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).
Jak ograniczyć rozrost bazy w wp-config.php
Zamiast ciągle sprzątać, lepiej nie brudzić. Skonfiguruj WordPressa mądrze.
Jak ograniczyć rewizje, kosz i autozapis
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 ); // sekundyJak wyłączyć edytor plików w WordPressie
Dla bezpieczeństwa i higieny:
define( 'DISALLOW_FILE_EDIT', true );Jak znaleźć wolne zapytania w Query Monitor
Nie zgaduj, co spowalnia stronę. Zainstaluj wtyczkę Query Monitor. Po instalacji, w pasku admina zobaczysz czas generowania strony i liczbę zapytań SQL.
- Kliknij w statystyki w pasku.
- Przejdź do zakładki “Queries”.
- 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.).
Lista kontrolna optymalizacji bazy WordPress
- Backup: Zawsze wykonaj kopię przed pracami na bazie.
- Silnik: Upewnij się, że wszystkie tabele to InnoDB.
- Autoload: Sprawdź rozmiar
autoloaded options(celuj < 800KB). - Czyszczenie: Usuń rewizje, spam i wygasłe transienty.
- Indeksy: Sprawdź, czy ciężkie zapytania używają indeksów.
- 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.







