Fiecare încărcare de pagină, trimitere de formular, operațiune de plugin și sesiune de utilizator în WordPress implică interogări de bază de date. În timp, baza de date acumulează suprasarcină: revizii vechi ale postărilor, transiente expirate, metadate orphaned, comentarii spam și tabele neutilizate de la pluginuri dezactivate. Această suprasarcină încetinește interogările, crește dimensiunile backup-urilor și degradează performanța generală a site-ului. Acest ghid acoperă cum să identifici suprasarcina bazei de date, să o cureți în siguranță și să previi întoarcerea acesteia.
Ce Stochează WordPress în Baza de Date
Înțelegerea a ceea ce se află în baza de date te ajută să identifici ce poate fi eliminat în siguranță. O instalare standard WordPress folosește 12 tabele de bază, iar pluginurile adaugă propriile tabele după cum este necesar.
| Tabel | Stochează | Sursă Comună de Suprasarcină |
|---|---|---|
| wp_posts | Postări, pagini, revizii, atașamente, tipuri de postări personalizate | Revizii de postări, auto-drafturi |
| wp_postmeta | Metadate pentru postări (câmpuri personalizate, date de plugin) | Meta orphaned de la postări șterse |
| wp_options | Setări ale site-ului, setări ale pluginurilor, transiente | Transiente expirate, setări vechi ale pluginurilor |
| wp_comments | Comentarii și trackback-uri | Comentarii spam, comentarii șterse |
| wp_commentmeta | Metadate pentru comentarii | Metadate Akismet pentru comentarii șterse |
| wp_usermeta | Metadate utilizator | Token-uri de sesiune, date de utilizator ale pluginurilor |
| wp_termmeta | Metadate pentru categorii și etichete | Metadate orphaned pentru termeni |
Surse Comune de Suprasarcină a Bazei de Date
Revizii de Postări
WordPress salvează o revizie de fiecare dată când faci clic pe "Salvează Draft" sau "Actualizează" pe o postare sau pagină. O postare editată de 50 de ori are 50 de revizii stocate în tabelul wp_posts, fiecare cu propriul set de intrări postmeta. Pe un site cu sute de postări, reviziile pot reprezenta mii de rânduri inutile în baza de date.
Transiente
Transientele sunt date temporare stocate în tabelul wp_options de către nucleul WordPress și pluginuri. Acestea au timp de expirare, dar WordPress nu șterge automat transientele expirate. Ele se acumulează în timp și pot crește semnificativ tabelul opțiunilor, mai ales pe site-urile cu multe pluginuri.
Date Orphaned
Când ștergi o postare, metadatele sale (intrările wp_postmeta) pot să nu fie șterse. În mod similar, ștergerea comentariilor, utilizatorilor sau termenilor poate lăsa în urmă rânduri de metadate orphaned. Pluginurile dezactivate și șterse lasă adesea tabelele lor de bază de date, consumând spațiu și aglomerând baza ta de date.
Conținut Spam și Șters
Comentariile spam, postările șterse și comentariile șterse rămân în baza de date până când sunt golite manual. Site-urile cu Akismet sau alte filtre de spam pot acumula mii de comentarii spam care necesită curățare periodică.
Auto-Drafturi
WordPress creează postări auto-draft atunci când faci clic pe "Adaugă Nou" în editorul de postări, chiar dacă nu publici niciodată. Acestea se acumulează în timp și nu au niciun scop după ce sesiunea de editare se încheie.
Curățarea Manuală a Bazei de Date prin SQL
Pentru cei confortabili cu SQL, poți curăța direct folosind phpMyAdmin sau un client de bază de date. Fă întotdeauna backup la baza ta de date înainte de a rula interogări de curățare.
Șterge Reviziile de Postări
-- Șterge toate reviziile de postări
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Șterge metadatele orphaned (metadate pentru postările șterse)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID ESTE NULL;
Curățarea Transientelor
-- Șterge transientele expirate
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
-- Șterge datele transientelor pentru transientele expirate
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';
Eliminarea Comentariilor Spam și a celor Șterse
-- Șterge comentariile spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Șterge comentariile șterse
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- Șterge metadatele comentariilor orphan
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;
Curățarea Bazei de Date pe Bază de Plugin-uri
Dacă preferi o abordare bazată pe GUI, mai multe plugin-uri se ocupă de optimizarea bazei de date cu capacități de programare:
WP-Optimize
WP-Optimize este un plugin gratuit care curăță revizii, schițe, spam, transient și date orphan. De asemenea, optimizează tabelele bazei de date și suportă curățări programate. Versiunea Pro adaugă suport pentru multisite și programare avansată.
Optimizarea Bazei de Date WP Rocket
WP Rocket include un tab de Bază de Date care se ocupă de revizii, schițe automate, postări șterse, comentarii spam, transient și optimizarea tabelelor. Deoarece WP Rocket este în principal un plugin de caching, obții curățarea bazei de date împreună cu optimizarea performanței într-un singur instrument.
Curățător Avansat de Bază de Date
Aceast plugin merge mai departe prin detectarea tabelelor lăsate în urmă de plugin-uri dezactivate și evenimente cron orphan. Clasifică tabelele ca fiind de bază WordPress, create de plugin sau necunoscute, ajutându-te să identifici care tabele sunt sigure de eliminat.
| Plugin | Versiune Gratuită | Curățare Programată | Detectare Tabele |
|---|---|---|---|
| WP-Optimize | Da | Da | Basic |
| WP Rocket | Nu (doar Premium) | Da | Nu |
| Curățător Avansat de Bază de Date | Da | Doar Pro | Da (detaliat) |
Optimizări wp-config.php
Prevenirea umflării bazei de date la sursă prin adăugarea acestor constante în fișierul tău wp-config.php:
Limitarea Reviziilor Postărilor
// Păstrează doar 5 revizii pe postare (recomandat)
define( 'WP_POST_REVISIONS', 5 );
// Dezactivează complet reviziile (nu este recomandat pentru majoritatea site-urilor)
define( 'WP_POST_REVISIONS', false );
Setarea reviziilor la 5 oferă suficient istoric pentru a recupera din greșeli, prevenind în același timp creșterea nelimitată a reviziilor. Pentru site-urile cu conținut bogat și modificări frecvente, 10 revizii sunt o alternativă rezonabilă.
Golirea Automată a Coșului
// Golirea coșului la fiecare 7 zile (implicit este 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Dezactivează coșul (elementele sunt șterse imediat - folosește cu prudență)
define( 'EMPTY_TRASH_DAYS', 0 );
Interval de Salvare Automată
// Crește intervalul de salvare automată la 5 minute (implicit este 60 de secunde)
define( 'AUTOSAVE_INTERVAL', 300 );
Optimizarea Tabelelor Bazei de Date
După ștergerea rândurilor, rulează o operațiune OPTIMIZE pentru a recupera spațiul fragmentat:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Programează aceasta lunar sau după operațiuni mari de curățare. Cele mai multe plugin-uri de curățare includ optimizarea tabelelor în sarcinile lor programate.
Programarea Curățării Automate
Configurați programe automate: curățarea temporară și a spamului săptămânal, eliminarea reviziilor lunar și optimizarea tabelelor, și auditurile trimestriale ale tabelelor de pluginuri orfane. WP-Optimize și WP Rocket suportă ambele curățarea programată. Configurați-le în timpul orelor de vârf reduse.
Monitorizarea Dimensiunii Bazei de Date
Urmăriți dimensiunea bazei de date pentru a detecta bloat-ul devreme. Rulați această interogare pentru a vedea dimensiunile individuale ale tabelelor:
SELECT table_name AS 'Table',
ROUND(data_length / 1024 / 1024, 2) AS 'Data (MB)',
table_rows AS 'Rows'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC
LIMIT 20;
Dacă wp_options depășește 5 MB sau wp_postmeta crește peste 100 MB, este timpul pentru o curățare. Aceste tabele sunt interogate frecvent, așa că dimensiunea lor afectează direct timpii de încărcare a paginilor.
Pentru o abordare cuprinzătoare de optimizare a performanței care include optimizarea bazei de date alături de caching, optimizarea imaginilor și configurarea serverului, citiți ghidul nostru de optimizare a vitezei WordPress. Pentru o sănătate continuă a bazei de date ca parte a rutinei dvs. de întreținere, consultați ghidul nostru de întreținere WordPress.
Pentru mai multe detalii, consultați documentația oficială: API-ul Bazei de Date WordPress.
Întrebări Frecvente
Este sigur să șterg reviziile postărilor din baza de date?
Da, ștergerea reviziilor postărilor este sigură și nu afectează conținutul publicat. Reviziile sunt instantanee istorice ale modificărilor din proiect. Odată ce conținutul dvs. este finalizat, reviziile nu mai au scop pentru majoritatea site-urilor. Cu toate acestea, faceți întotdeauna o copie de rezervă a bazei de date înainte de a efectua orice curățare.
Va îmbunătăți optimizarea bazei de date viteza site-ului meu în mod vizibil?
Îmbunătățirea depinde de cât de mult bloat are baza dvs. de date. Site-urile cu peste 50.000 de rânduri orfane sau un tabel wp_options care depășește 10 MB vor observa îmbunătățiri vizibile în timpii de încărcare a paginilor și în reacția tabloului de bord admin. Site-urile mai mici pot observa câteva câștiguri marginale. Optimizarea bazei de date funcționează împreună cu caching-ul și alte măsuri de performanță pentru o îmbunătățire cumulativă.
Cât de des ar trebui să îmi optimizez baza de date WordPress?
Pentru site-uri active cu actualizări regulate de conținut, optimizarea lunară este o bază bună. Site-urile cu trafic mare, cu comentarii frecvente, tranzacții WooCommerce sau trimiterea de formulare pot beneficia de curățarea temporară și a spamului săptămânal, împreună cu optimizarea tabelelor lunar.
Pot pluginurile de curățare a bazei de date să rupă site-ul meu?
Pluginurile de încredere, cum ar fi WP-Optimize și WP Rocket, sunt concepute pentru a fi sigure. Acestea vizează categorii cunoscute de bloat (revizii, temporare, spam) și nu ating date esențiale. Riscul crește atunci când ștergeți manual tabele specifice pluginurilor. Dacă nu sunteți sigur dacă o tabelă este necesară, lăsați-o la locul ei și cercetați mai întâi scopul acesteia.
Care este diferența dintre OPTIMIZE TABLE și ștergerea rândurilor?
Ștergerea rândurilor elimină datele din tabel. OPTIMIZE TABLE reorganizează stocarea fizică a tabelului după ce rândurile au fost șterse, recuperând spațiu pe disc și defragmentând fișierul de date. Gândiți-vă la asta ca la ștergerea fișierelor (ștergerea rândurilor) versus defragmentarea hard disk-ului dvs. (optimizarea tabelului).
Ar trebui să folosesc InnoDB sau MyISAM pentru tabelele WordPress?
WordPress folosește InnoDB în mod implicit din versiunea 5.5 și este motorul de stocare recomandat. InnoDB suportă blocarea la nivel de rând (mai bună pentru utilizatori concurenți), tranzacții și recuperare în caz de accident. MyISAM este mai rapid pentru operațiuni intensive de citire, dar nu are aceste caracteristici de fiabilitate. Dacă găsiți tabele MyISAM în baza dvs. de date, conversia acestora în InnoDB este în general recomandată.
Cum pot identifica tabelele lăsate de pluginuri dezactivate?
Pluginul Advanced Database Cleaner poate detecta și categoriza tabelele non-core. Alternativ, rulați interogarea SQL SHOW TABLES și comparați numele tabelelor cu tabelele de bază WordPress și pluginurile dvs. active în prezent. Tabelele cu prefixe care se potrivesc cu pluginurile dezactivate sunt candidați pentru eliminare.
Adaugă WooCommerce un bloat semnificativ în baza de date?
Da. WooCommerce stochează datele comenzilor, metadatele produselor, sesiunile clienților și temporarele care cresc substanțial pe magazinele active. Utilizați WooCommerce > Status > Tools pentru a șterge regulat temporarele și sesiunile expirate.
Optimizează Performanța din Fiecare Unghi
WP Rocket se ocupă de caching, curățarea bazei de date și optimizarea performanței într-un singur plugin, astfel încât să puteți menține site-ul dvs. funcționând fără probleme.
Explorați WP Rocket →


