A WordPress minden tartalmat, beállítást és sok bővítményadatot MySQL vagy MariaDB adatbázisban tárol, és minden oldalbetöltésnél lekérdezéseket futtat rajta. Az évek során az adatbázisba sok felesleges adat kerül: régi bejegyzés-változatok, spam hozzászólások, lejárt ideiglenes adatok, törölt bővítmények beállításai. Egy elhanyagolt adatbázis lassítja az oldalt, különösen az admin felületet és a webáruházak dinamikus oldalait, a mentéseket pedig nagyobbá és lassabbá teszi.
Ebben az útmutatóban megmutatjuk, mitől hízik meg az adatbázis, hogyan ismerd fel a bajt, hogyan tisztítsd és optimalizáld biztonságosan bővítménnyel, phpMyAdminnal és WP-CLI-vel, és hogyan előzd meg, hogy újra elhanyagolttá váljon.
Mitől hízik meg az adatbázis?
- Bejegyzés-változatok (revíziók): a WordPress minden mentéskor elteszi a bejegyzés korábbi változatát. Egy sokat szerkesztett oldalnak több tucat revíziója is lehet.
- Automatikus piszkozatok és lomtár: a törölt, de a lomtárban maradt bejegyzések és oldalak.
- Hozzászólások: spam, lomtárba tett és jóváhagyásra váró hozzászólások.
- Átmeneti adatok (transientek): a bővítmények által ideiglenesen tárolt adatok; a lejártak egy része nem törlődik magától.
- Árva adatok: törölt bejegyzésekhez, felhasználókhoz vagy kifejezésekhez tartozó metaadatok.
- Törölt bővítmények maradványai: beállítások a
wp_optionstáblában, saját táblák. - Naplók és statisztikák: egyes biztonsági, statisztikai és átirányítási bővítmények nagy naplótáblákat építenek.
- Webáruház: a WooCommerce munkamenetei, a háttérfeladatok (Action Scheduler) naplói és a régi rendelési adatok.
Az autoload és a wp_options tábla
A wp_options tábla különösen fontos. Az itt tárolt beállítások egy része automatikusan betöltődik (autoload) minden oldalbetöltésnél, akkor is, ha az adott oldalon nincs rájuk szükség. Ha ez a mennyiség megnő (például egy törölt bővítmény ottfelejtett, nagy beállításai miatt), minden oldal lassul. A WordPress az Eszközök › Webhely állapota oldalon figyelmeztet, ha az automatikusan betöltött adatok mérete túl nagy. Hogyan mérd meg, és hogyan csökkentsd biztonságosan, a wp_options és az autoload adatok átvizsgálásáról szóló tudásbázis-cikk mutatja be; a felduzzadt wp_postmeta táblát külön cikk tárgyalja.
A lassú adatbázis jelei
- az admin felület lassú, különösen a bejegyzés- és rendeléslisták,
- a Webhely állapota oldal figyelmeztet az automatikusan betöltött beállításokra,
- a mentések egyre nagyobbak és lassabbak,
- a tárhely erőforrás-statisztikái magas CPU- vagy IO-használatot mutatnak,
- a Query Monitor bővítmény lassú vagy nagyon sok lekérdezést jelez.
Előtte: mentés
Az adatbázis tisztítása nem visszafordítható. Mindig készíts mentést előtte. cPanelben a phpMyAdminban az adatbázis exportálásával, vagy a Backup menüpontban az adatbázis letöltésével; az aWh cPanel és WordPress tárhelyein ezen felül a napi JetBackup mentésből is visszaállíthatsz. A mentés és visszaállítás lépéseit a fájlok és adatbázisok mentésből való visszaállításáról szóló cikk írja le.
Tisztítás bővítménnyel
A legegyszerűbb út egy erre szolgáló bővítmény:
- WP-Optimize: revíziók, piszkozatok, spam, lejárt transientek törlése és a táblák optimalizálása, ütemezhetően.
- Advanced Database Cleaner: az árva adatok és a törölt bővítmények által hátrahagyott táblák és beállítások felderítésére is jó.
Ajánlott lépések:
- Futtasd a revíziók, automatikus piszkozatok, lomtár, spam és lejárt transientek törlését.
- Nézd meg az árva beállításokat és táblákat, de csak azokat töröld, amelyekről biztosan tudod, hogy egy már nem használt bővítményhez tartoznak.
- Optimalizáld a táblákat.
- Ellenőrizd az oldalt és az admin felületet.
A tisztítás után a bővítményt ki is kapcsolhatod, vagy ütemezett, havi futtatásra állíthatod.
Haladóknak: phpMyAdmin és WP-CLI
phpMyAdmin (cPanelben a Databases csoportban):
- Az adatbázist megnyitva a táblák mérete és sorainak száma alapján látod, hol van a legtöbb adat.
- A táblák kijelölése után az „Optimize table” paranccsal a táblák újraszervezhetők. Az InnoDB tábláknál ez a teljes tábla újraépítését jelenti, ami nagy táblánál időbe telik, és közben a tábla zárolva lehet, ezért alacsony forgalmú időszakban futtasd.
- SQL-lekérdezésekkel közvetlenül is törölhetsz (például a revíziókat), de ez csak akkor ajánlott, ha pontosan érted a WordPress táblaszerkezetét. A táblaelőtag nem mindig
wp_.
A phpMyAdmin alapjairól külön cikkünk szól.
WP-CLI (ha a csomag SSH-t is tartalmaz):
wp db size --tables # a táblák mérete
wp transient delete --expired # a lejárt átmeneti adatok törlése
wp post delete $(wp post list --post_type=revision --format=ids) --force # revíziók törlése
wp db optimize # a táblák optimalizálása
Előtte a wp db export mentes.sql paranccsal készíts mentést. Az aWh cPanel tárhelyein a wp db export és a wp db optimize nem fut le, mert a proc_open PHP-függvény biztonsági okból le van tiltva; ott a mentést a mysqldump paranccsal, az optimalizálást a phpMyAdminban végezd. A lépéseket a WP-CLI használatáról szóló tudásbázis-cikk írja le.
Megelőzés
Revíziók korlátozása. A wp-config.php fájlban a revíziók számát korlátozhatod (a „That’s all, stop editing!” sor elé írva):
define( 'WP_POST_REVISIONS', 10 );
Lomtár ürítése. Alapértelmezésben a WordPress 30 nap után üríti a lomtárat; ezt rövidebbre is állíthatod (define( 'EMPTY_TRASH_DAYS', 7 );).
Bővítmény-higiénia. Csak a szükséges bővítményeket tartsd meg, és ha törölsz egyet, nézd meg, hogy van-e „adatok törlése eltávolításkor” beállítása. A bővítmények kezeléséről bővítményes útmutatónk szól.
Naplók korlátozása. A biztonsági, statisztikai és átirányítási bővítményeknél állítsd be, hogy a régi naplóbejegyzések egy idő után törlődjenek.
Webáruháznál. Kapcsold be a WooCommerce nagy teljesítményű rendeléstárolását (HPOS), amely a rendeléseket saját, optimalizált táblákban tárolja, és állítsd be, hogy az Action Scheduler régi, befejezett feladatai törlődjenek.
Ütemezett karbantartás. Havonta egyszer futtasd le a tisztítást (bővítménnyel ütemezve vagy cron feladattal); a cron job cPanelben való beállításáról külön útmutatónk szól.
Objektum-gyorsítótár. Nagy forgalmú oldalon vagy webáruházban egy perzisztens objektum-gyorsítótár (például Redis) a gyakori lekérdezések eredményét a memóriában tartja, ami sokat csökkenti az adatbázis terhelését. Ehhez jellemzően VPS kell.
A tárhely szerepe
Az adatbázis sebessége a tárolótól is függ: egy WordPress oldal rengeteg apró olvasási és írási műveletet végez, amelyekben az NVMe SSD sokszorosan gyorsabb a hagyományos SSD-knél és merevlemezeknél. Az aWh WordPress tárhelyei és cPanel tárhelyei NVMe SSD-n futnak, korlátlan számú adatbázissal. Ha az oldalad a tisztítás után is rendszeresen eléri a csomag erőforrás-limitjeit, egy nagyobb csomag vagy egy KVM VPS lehet a következő lépés.
Összefoglalás
Az adatbázis karbantartása egyszerű, ha rendszeresen csinálod: mentés, revíziók, lomtár, spam és lejárt átmeneti adatok törlése, az árva bővítményadatok óvatos eltávolítása, táblaoptimalizálás. A revíziók korlátozásával, a bővítmény-higiéniával és a havi ütemezett tisztítással megelőzheted, hogy az adatbázis újra elhízzon.
Gyakori kérdések
Biztonságos az adatbázis optimalizálása?
Igen, ha előtte mentést készítesz, és csak azt törlöd, amiről tudod, mi. A revíziók, a spam és a lejárt transientek törlése biztonságos; az árva táblák és beállítások törlésénél légy óvatos.
Milyen gyakran kell tisztítani?
Egy átlagos oldalon havonta vagy negyedévente elég; webáruháznál és sokat szerkesztett oldalnál gyakrabban is érdemes.
Törölhetek a wp_options táblából kézzel?
Csak akkor, ha pontosan tudod, melyik bejegyzés melyik (már nem használt) bővítményhez tartozik. A WordPress és a működő bővítmények beállításainak törlése hibákat okoz. Előtte mindig ments.
Okozhat leállást az optimalizálás?
Nagy táblák optimalizálásánál a tábla rövid időre zárolva lehet, ami lassulást okozhat. Ezért alacsony forgalmú időszakban futtasd.
Mi a különbség a tisztítás és az optimalizálás között?
A tisztítás a felesleges adatokat törli, az optimalizálás a táblák belső szerkezetét rendezi újra, és felszabadítja a törlés után üresen maradt helyet.
Lassít a sok revízió?
Kis mennyiségben alig, de egy sokat szerkesztett oldalnál a revíziók az adatbázis jelentős részét adhatják, és lassíthatják az admin felületet és a mentéseket. Korlátozd a számukat a wp-config.php fájlban.
Kell külön bővítmény, ha cPanelem van?
Nem feltétlenül: a phpMyAdminnal és WP-CLI-vel bővítmény nélkül is elvégezheted. A bővítmény a kényelmesebb, különösen ha ütemezett tisztítást szeretnél.