Optymalizacja bazy danych WordPress - kompletny poradnik
Baza danych WordPress rośnie z czasem - rewizje, spam, transients, autoloaded data. Spowolnienie strony może być spowodowane właśnie bazą. Pokażę jak ją wyczyścić i zoptymalizować.
Krótka odpowiedź
1) usuń rewizje postów (wp_posts),
2) wyczyść spam i kosz,
3) usuń niepotrzebne transients (wp_options),
4) zoptymalizuj tabele (OPTIMIZE TABLE),
5) ogranicz autoloaded data. Wtyczki: WP-Optimize, Advanced Database Cleaner.
Co spowalnia bazę danych WordPress
Rewizje postów:
- Każda edycja = nowy wiersz w wp_posts
- Post z 50 edycjami = 50 rewizji
- Mogą stanowić 80% tabeli wp_posts
Transients:
- Tymczasowe dane w wp_options
- Często nie wygasają poprawnie
- Gromadzą się tysiącami
Autoloaded data:
- Dane ładowane przy każdym request
- Wtyczki zostawiają śmieci po odinstalowaniu
- Może wynosić 1MB+ (powinno < 1MB)
Spam i kosz:
- Komentarze spam
- Posty/strony w koszu
- Metadane usuniętych elementów
WP-Optimize (wtyczka)
Instalacja:
- Wtyczki → WP-Optimize
- Aktywuj
Optymalizacja jednym kliknięciem:
1. WP-Optimize → Database
2. Zaznacz opcje:
- Clean all post revisions
- Clean all auto-draft posts
- Clean all trashed posts
- Remove spam comments
- Remove transient options
- Optimize database tables
3. Run all selected optimizations
Automatyzacja:
- Scheduled clean-up (tygodniowo)
- Ustaw retencję rewizji (np. ostatnie 2)
Dodatkowe funkcje:
- Image compression
- Cache (alternatywa dla W3TC)
- Minify CSS/JS
Ręczna optymalizacja (phpMyAdmin / WP-CLI)
phpMyAdmin - usuwanie rewizji:
```sql
DELETE FROM wp_posts WHERE post_type = 'revision';
```
Usuwanie transients:
```sql
DELETE FROM wp_options WHERE option_name LIKE '%_transient_%';
```
Optymalizacja tabel:
```sql
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments;
```
WP-CLI:
```bash
wp post delete $(wp post list --post_type='revision' --format=ids) --force
wp transient delete --all
wp db optimize
```
Sprawdzenie autoload:
```sql
SELECT SUM(LENGTH(option_value)) as autoload_size
FROM wp_options WHERE autoload = 'yes';
```
Wynik powyżej 1MB = problem.
Ograniczenie rewizji i autoload
Limit rewizji w wp-config.php:
```php
// Maksymalnie 3 rewizje na post
define('WP_POST_REVISIONS', 3);
// Lub całkowite wyłączenie (niezalecane)
define('WP_POST_REVISIONS', false);
```
Interwał autosave:
```php
// Autosave co 120 sekund (domyślnie 60)
define('AUTOSAVE_INTERVAL', 120);
```
Znajdowanie problematycznych autoload:
```sql
SELECT option_name, LENGTH(option_value) as size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;
```
Wyłączenie autoload dla dużych opcji:
```sql
UPDATE wp_options SET autoload = 'no'
WHERE option_name = 'nazwa_opcji';
```