
Optymalizacja Bazy Danych WordPress – Jak Przyspieszyć Stronę?
Spis treści
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ą:
- 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.
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.
- 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 ze źle napisanej wtyczki (“Niedawno oglądane produkty”, “Licznik odwiedzin”, itp.).
Podsumowanie: Lista kontrolna optymalizacji
- 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 optymalizacje. Sprawdź cennik usług WordPress.