Każde ładowanie strony, przesyłanie formularza, działanie wtyczki i sesja użytkownika w WordPressie wiąże się z zapytaniami do bazy danych. Z czasem baza danych gromadzi nadmiar: stare rewizje postów, wygasłe transienty, osierocone metadane, spamowe komentarze i nieużywane tabele z dezaktywowanych wtyczek. Ten nadmiar spowalnia zapytania, zwiększa rozmiary kopii zapasowych i pogarsza ogólną wydajność strony. Ten przewodnik opisuje, jak zidentyfikować nadmiar w bazie danych, bezpiecznie go usunąć i zapobiec jego powrotowi.
Co WordPress Przechowuje w Bazie Danych
Zrozumienie, co znajduje się w twojej bazie danych, pomaga zidentyfikować, co można bezpiecznie usunąć. Standardowa instalacja WordPressa używa 12 podstawowych tabel, a wtyczki dodają swoje własne tabele w razie potrzeby.
| Tabela | Przechowuje | Typowe źródło nadmiaru |
|---|---|---|
| wp_posts | Posty, strony, rewizje, załączniki, niestandardowe typy postów | Rewizje postów, auto-szkice |
| wp_postmeta | Metadane dla postów (pola niestandardowe, dane wtyczek) | Osierocone metadane z usuniętych postów |
| wp_options | Ustawienia witryny, ustawienia wtyczek, transienty | Wygasłe transienty, stare ustawienia wtyczek |
| wp_comments | Komentarze i trackbacki | Spamowe komentarze, usunięte komentarze |
| wp_commentmeta | Metadane dla komentarzy | Metadane Akismet dla usuniętych komentarzy |
| wp_usermeta | Metadane użytkowników | Tokeny sesji, dane użytkowników wtyczek |
| wp_termmeta | Metadane dla kategorii i tagów | Osierocone metadane terminów |
Typowe Źródła Nadmiaru w Bazie Danych
Rewizje Postów
WordPress zapisuje rewizję za każdym razem, gdy klikniesz "Zapisz szkic" lub "Aktualizuj" w poście lub stronie. Post edytowany 50 razy ma 50 rewizji zapisanych w tabeli wp_posts, z każdą z własnym zestawem wpisów postmeta. Na stronie z setkami postów, rewizje mogą stanowić tysiące niepotrzebnych wierszy w bazie danych.
Transienty
Transienty to tymczasowe dane przechowywane w tabeli wp_options przez rdzeń WordPressa i wtyczki. Mają czasy wygaśnięcia, ale WordPress nie usuwa automatycznie wygasłych transientów. Gromadzą się z czasem i mogą znacznie zwiększyć rozmiar tabeli opcji, szczególnie na stronach z wieloma wtyczkami.
Osierocone Dane
Kiedy usuwasz post, jego metadane (wpisy wp_postmeta) mogą nie zostać usunięte. Podobnie, usunięcie komentarzy, użytkowników lub terminów może pozostawić osierocone wiersze metadanych. Dezaktywowane i usunięte wtyczki często pozostawiają swoje tabele bazy danych, zajmując miejsce i zaśmiecając twoją bazę danych.
Spam i Usunięte Treści
Spamowe komentarze, usunięte posty i usunięte komentarze pozostają w bazie danych, aż zostaną ręcznie opróżnione. Strony z Akismetem lub innymi filtrami spamu mogą gromadzić tysiące spamowych komentarzy, które wymagają okresowego czyszczenia.
Auto-Szkice
WordPress tworzy auto-szkice postów, gdy klikniesz "Dodaj nowy" w edytorze postów, nawet jeśli nigdy ich nie publikujesz. Gromadzą się z czasem i nie mają żadnego celu po zakończeniu sesji edycyjnej.
Ręczne Czyszczenie Bazy Danych za pomocą SQL
Dla tych, którzy czują się komfortowo z SQL, możesz oczyścić bezpośrednio za pomocą phpMyAdmin lub klienta bazy danych. Zawsze wykonuj kopię zapasową swojej bazy danych przed uruchomieniem zapytań czyszczących.
Usuń Rewizje Postów
-- Usuń wszystkie rewizje postów
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Usuń osierocone postmeta (metadane dla usuniętych postów)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WOczyszczanie Transientów
-- Usuń wygasłe transienty
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
-- Usuń dane transientów dla wygasłych transientów
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';
Usuń Spam i Kosz
-- Usuń komentarze spamowe
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Usuń komentarze w koszu
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- Usuń osierocone metadane komentarzy
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;
Oczyszczanie Bazy Danych na Podstawie Wtyczek
Jeśli wolisz podejście oparte na GUI, kilka wtyczek zajmuje się optymalizacją bazy danych z możliwością planowania:
WP-Optimize
WP-Optimize to darmowa wtyczka, która czyści rewizje, szkice, spam, transienty i osierocone dane. Optymalizuje również tabele bazy danych i wspiera planowane czyszczenie. Wersja Pro dodaje wsparcie dla multisite i zaawansowane planowanie.
Optymalizacja Bazy Danych WP Rocket
WP Rocket zawiera zakładkę Baza Danych, która zajmuje się rewizjami, auto-szkicami, usuniętymi postami, spamowymi komentarzami, transientami i optymalizacją tabel. Ponieważ WP Rocket jest głównie wtyczką do buforowania, otrzymujesz czyszczenie bazy danych razem z optymalizacją wydajności w jednym narzędziu.
Zaawansowany Oczyszczacz Bazy Danych
Ta wtyczka idzie głębiej, wykrywając tabele pozostawione przez dezaktywowane wtyczki i osierocone zdarzenia cron. Kategorzuje tabele jako rdzeń WordPressa, stworzone przez wtyczki lub nieznane, pomagając zidentyfikować, które tabele można bezpiecznie usunąć.
Wtyczka
Wersja Darmowa
Planowane Czyszczenie
Wykrywanie Tabel
WP-Optimize
Tak
Tak
Podstawowe
WP Rocket
Nie (tylko Premium)
Tak
Nie
Zaawansowany Oczyszczacz Bazy Danych
Tak
Tylko Pro
Tak (szczegółowe)
Optymalizacje wp-config.php
Zapobiegaj nadmiernemu wzrostowi bazy danych u źródła, dodając te stałe do swojego pliku wp-config.php:
Limit Rewizji Postów
// Zachowaj tylko 5 rewizji na post (zalecane)
define( 'WP_POST_REVISIONS', 5 );
// Całkowicie wyłącz rewizje (niezalecane dla większości stron)
define( 'WP_POST_REVISIONS', false );
Ustawienie rewizji na 5 zapewnia wystarczającą historię do odzyskania z błędów, jednocześnie zapobiegając nieograniczonemu wzrostowi rewizji. Dla stron z dużą ilością treści i częstymi edycjami, 10 rewizji to rozsądna alternatywa.
Automatyczne Opróżnianie Kosza
// Opróżniaj kosz co 7 dni (domyślnie 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Wyłącz kosz (elementy usuwane natychmiast - używaj ostrożnie)
define( 'EMPTY_TRASH_DAYS', 0 );
Interwał Autosave
// Zwiększ interwał autosave do 5 minut (domyślnie 60 sekund)
define( 'AUTOSAVE_INTERVAL', 300 );
Optymalizacja Tabel Bazy Danych
Po usunięciu wierszy, uruchom operację OPTIMIZE, aby odzyskać zfragmentowaną przestrzeń:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Zaplanować to miesięcznie lub po dużych operacjach czyszczenia. Większość wtyczek do czyszczenia zawiera optymalizację tabel w swoich zaplanowanych zadaniach.
Planowanie Automatycznego Czyszczenia
Ustaw automatyczne harmonogramy: cotygodniowe czyszczenie transjentów i spamu, miesięczne usuwanie rewizji i optymalizacja tabel, oraz kwartalne audyty osieroconych tabel wtyczek. WP-Optimize i WP Rocket obsługują zaplanowane czyszczenie. Skonfiguruj je w godzinach poza szczytem.
Monitorowanie Rozmiaru Bazy Danych
Śledź rozmiar swojej bazy danych, aby wcześnie wykryć nadmiar. Uruchom to zapytanie, aby zobaczyć rozmiary poszczególnych tabel:
SELECT table_name AS 'Tabela',
ROUND(data_length / 1024 / 1024, 2) AS 'Dane (MB)',
table_rows AS 'Wiersze'
FROM information_schema.tables
WHERE table_schema = 'twoja_nazwa_bazy_danych'
ORDER BY (data_length + index_length) DESC
LIMIT 20;
Jeśli wp_options przekracza 5 MB lub wp_postmeta rośnie powyżej 100 MB, czas na czyszczenie. Tabele te są często zapytywane, więc ich rozmiar bezpośrednio wpływa na czasy ładowania strony.
Aby uzyskać kompleksowe podejście do optymalizacji wydajności, które obejmuje optymalizację bazy danych obok buforowania, optymalizacji obrazów i konfiguracji serwera, przeczytaj nasz przewodnik po optymalizacji prędkości WordPressa. Aby zapewnić zdrowie bazy danych w ramach swojej rutyny konserwacyjnej, zapoznaj się z naszym przewodnikiem po konserwacji WordPressa.
Aby uzyskać więcej szczegółów, zapoznaj się z oficjalną dokumentacją: API bazy danych WordPress.
Najczęściej Zadawane Pytania
Czy usuwanie rewizji postów z bazy danych jest bezpieczne?
Tak, usuwanie rewizji postów jest bezpieczne i nie wpływa na opublikowaną treść. Rewizje są historycznymi zrzutami zmian w szkicach. Gdy Twoja treść jest sfinalizowana, rewizje nie mają celu dla większości stron. Zawsze jednak wykonuj kopię zapasową swojej bazy danych przed przeprowadzeniem jakiegokolwiek czyszczenia.
Czy optymalizacja bazy danych poprawi zauważalnie prędkość mojej strony?
Poprawa zależy od tego, jak bardzo nadmiarowa jest Twoja baza danych. Strony z 50 000+ osieroconymi wierszami lub tabelą wp_options przekraczającą 10 MB zauważą znaczną poprawę w czasach ładowania strony i responsywności panelu administracyjnego. Mniejsze strony mogą zauważyć marginalne zyski. Optymalizacja bazy danych działa w połączeniu z buforowaniem i innymi środkami wydajnościowymi dla skumulowanej poprawy.
Jak często powinienem optymalizować moją bazę danych WordPress?
Dla aktywnych stron z regularnymi aktualizacjami treści, miesięczna optymalizacja jest dobrym punktem wyjścia. Strony o dużym ruchu z częstymi komentarzami, transakcjami WooCommerce lub przesyłkami formularzy mogą skorzystać na cotygodniowym czyszczeniu transjentów i spamu oraz miesięcznej optymalizacji tabel.
Czy wtyczki do czyszczenia bazy danych mogą uszkodzić moją stronę?
Renomowane wtyczki, takie jak WP-Optimize i WP Rocket, są zaprojektowane tak, aby były bezpieczne. Skupiają się na znanych kategoriach nadmiaru (rewizje, transjenty, spam) i nie dotykają danych istotnych. Ryzyko wzrasta przy ręcznym usuwaniu tabel specyficznych dla wtyczek. Jeśli nie jesteś pewien, czy tabela jest potrzebna, pozostaw ją w miejscu i najpierw zbadaj jej cel.
Jaka jest różnica między OPTIMIZE TABLE a usuwaniem wierszy?
Usuwanie wierszy usuwa dane z tabeli. OPTIMIZE TABLE reorganizuje fizyczne przechowywanie tabeli po usunięciu wierszy, odzyskując miejsce na dysku i defragmentując plik danych. Można to porównać do usuwania plików (usuwanie wierszy) w przeciwieństwie do defragmentacji dysku twardego (optymalizacja tabeli).
Czy powinienem używać InnoDB czy MyISAM dla tabel WordPress?
WordPress domyślnie używa InnoDB od wersji 5.5 i jest to zalecany silnik przechowywania. InnoDB obsługuje blokowanie na poziomie wiersza (lepsze dla użytkowników równoległych), transakcje i odzyskiwanie po awarii. MyISAM jest szybszy w operacjach intensywnie odczytowych, ale brakuje mu tych funkcji niezawodności. Jeśli znajdziesz tabele MyISAM w swojej bazie danych, ogólnie zaleca się ich konwersję na InnoDB.
Jak mogę zidentyfikować tabele pozostawione przez dezaktywowane wtyczki?
Wtyczka Advanced Database Cleaner może wykrywać i klasyfikować tabele niebędące częścią rdzenia. Alternatywnie, uruchom zapytanie SQL SHOW TABLES i porównaj nazwy tabel z tabelami rdzenia WordPressa oraz aktualnie aktywnymi wtyczkami. Tabele z prefiksami odpowiadającymi dezaktywowanym wtyczkom są kandydatami do usunięcia.
Czy WooCommerce dodaje znaczną ilość nadmiaru w bazie danych?
Tak. WooCommerce przechowuje dane zamówień, metadane produktów, sesje klientów oraz transjenty, które znacznie rosną na aktywnych sklepach. Użyj WooCommerce > Status > Narzędzia, aby regularnie czyścić wygasłe transjenty i sesje.
Optymalizuj Wydajność z Każdej Strony
WP Rocket zajmuje się buforowaniem, czyszczeniem bazy danych i optymalizacją wydajności w jednej wtyczce, dzięki czemu możesz utrzymać swoją stronę w dobrej kondycji.
Poznaj WP Rocket →



