Baza danych WordPress z czasem gromadzi dane, których strona już nie potrzebuje. Rewizje wpisów, stare transienty, porzucone opcje po odinstalowanych wtyczkach — to wszystko zajmuje miejsce i może spowalniać zapytania SQL.
Co to jest czyszczenie bazy danych
Czyszczenie bazy danych (database cleanup) to proces konserwacyjny polegający na usunięciu niepotrzebnych rekordów z tabel MySQL i uporządkowaniu struktury tabel. Efektem może być mniejsza baza danych, mniej obciążony serwer bazodanowy i szybszy TTFB — szczególnie wtedy, gdy problemem były ciężkie zapytania, nadmiar danych z autoload lub duże, zaniedbane tabele.
To proces po stronie serwera — nie wpływa bezpośrednio na renderowanie strony w przeglądarce (FCP, LCP). Czyszczenie bazy może przyspieszyć generowanie HTML przez PHP, ale nie zastępuje optymalizacji frontendu.
Co zaśmieca bazę danych WordPress
Rewizje wpisów
WordPress domyślnie przechowuje historię edycji każdego wpisu i strony. Każda zapisana wersja to osobny rekord w tabeli wp_posts. Przy intensywnym redagowaniu treści jedna strona może mieć dziesiątki rewizji — z których większość nie jest już potrzebna.
Liczbę przechowywanych rewizji można ograniczyć przez stałą w wp-config.php:
define( 'WP_POST_REVISIONS', 5 ); // przechowuj maksymalnie 5 rewizji
Wygasłe transienty
Transients API zapisuje tymczasowe dane z czasem wygaśnięcia w tabeli wp_options. Po wygaśnięciu powinny być usuwane automatycznie. W praktyce mechanizm cron odpowiedzialny za to czyszczenie nie zawsze działa prawidłowo — i stare transienty zalegają w bazie, nieużywane.
Opcje z autoload po odinstalowanych wtyczkach
To jeden z częstszych problemów. Gdy deinstaluje się wtyczkę, która nie czyści po sobie rekordów w wp_options, te opcje zostają w bazie — często z flagą autoload = yes.
Dane z autoload = yes są wczytywane do pamięci przy każdym uruchomieniu strony, niezależnie od tego, czy są potrzebne. Sumaryczny rozmiar takich danych powyżej kilku MB może wyraźnie spowalniać TTFB.
Spam w komentarzach
Komentarze oznaczone jako spam lub przeniesione do kosza pozostają w tabeli wp_comments. Przy dużym natężeniu spamu mogą stanowić tysiące rekordów.
Osierocone metadane
Usunięte wpisy pozostawiają po sobie metadane w tabelach wp_postmeta i wp_usermeta. Są to “sieroty” — rekordy odnoszące się do wpisów, które już nie istnieją.
Jak czyścić bazę danych
Przed czyszczeniem, bez wyjątku, należy wykonać kopię zapasową bazy danych. Operacje DELETE na tabelach bazy są nieodwracalne bez backupu.
Wtyczki. WP-Optimize, Advanced Database Cleaner i podobne narzędzia oferują graficzny interfejs do czyszczenia. Pozwalają wybierać kategorie danych do usunięcia i planować automatyczne czyszczenie w regularnych odstępach.
Ręcznie przez phpMyAdmin. Dla zaawansowanych — możliwość uruchamiania konkretnych zapytań SQL. Daje większą kontrolę, ale wymaga wiedzy o strukturze tabel. Więcej o phpMyAdmin: phpMyAdmin w WordPress.
Redis jako alternatywa dla transientów. Jeśli serwer ma dostępnego Redis, transienty są przekierowywane do pamięci RAM zamiast bazy danych — co redukuje problem zaśmiecenia tabeli wp_options przez wygasłe transienty.
Optymalizacja tabel
Po usunięciu rekordów tabele nie zawsze od razu zmniejszają się na dysku — mogą zachowywać zarezerwowane miejsce po usuniętych danych (fragmentacja). Operacja OPTIMIZE TABLE odbudowuje tabelę i może zwolnić nieużywane miejsce, zależnie od silnika bazy danych i konfiguracji serwera.
Większość wtyczek do czyszczenia bazy wykonuje tę operację automatycznie po usunięciu danych. Przy dużych tabelach (np. tabela wp_options o rozmiarze setek MB) operacja ta może chwilę trwać — dobrze przeprowadzać ją w godzinach niskiego ruchu.
Jak często czyścić bazę danych
Zależy to od intensywności pracy na stronie:
- na stronach blogowych z regularnym redagowaniem treści — raz na miesiąc
- na sklepach WooCommerce z dużą liczbą zamówień — częściej, nawet co tydzień
- na stronach z małą aktywnością — kilka razy do roku
Automatyczne czyszczenie przez wtyczki można skonfigurować z użyciem WordPress Cron.