Înțelegerea modului în care WordPress utilizează MySQL

Publicat: 2014-09-30

În linii mari, WordPress poate fi împărțit în două segmente:

  • logica și șabloanele care generează aspectul și senzația unui site WordPress
  • baza de date MySQL care stochează tot conținutul și îl alimentează pe tot

Dar ce este MySQL?

MySQL este incredibil de puternic, dar baza de date stoc care alimentează WordPress se întâmplă să fie, de asemenea, ușoară și robustă. Una dintre cele mai bune părți ale unui CMS puternic precum WordPress este că se ocupă de toată gestionarea bazei de date pentru utilizator și o retrage de la utilizatorul final. Utilizatorii WordPress, și chiar designerii, nu trebuie să cunoască îndeaproape modul în care funcționează baza de date. Cu toate acestea, dacă sunteți interesat să înțelegeți cu adevărat cum funcționează WordPress, această postare este pentru dvs.

Mai întâi, să vorbim despre ce este MySQL. Mai exact, MySQL este un sistem de gestionare a bazelor de date relaționale sau RDBMS pe scurt. Un RDBMS este un container conceput pentru a gestiona și a rula Structured Query Language (SQL). SQL este ceea ce alimentează o bază de date - controlează structura și forma bazei de date și, de asemenea, înregistrează inserările, ștergerile, modificările și așa mai departe care sunt efectuate în acea bază de date.

Cum funcționează MySQL?

Totuși, totul este puțin tehnic, așa că haideți să facem un pas înapoi și să ne gândim cum ar arăta o bază de date SQL.

SQL este organizat în tabele de informații. În linii mari, gândiți-vă la un tabel ca la o foaie de calcul în Excel. Rândurile și coloanele stochează informații conform unei structuri predeterminate. Cu toate acestea, spre deosebire de o foaie de calcul Excel, coloanele (numite chei sau uneori câmpuri ) ale unei baze de date SQL sunt predefinite și clasificate în avans.

Structura definită sau coloanele tabelelor din WordPress sunt stabilite în avans - nu se vor schimba pe măsură ce un site crește, decât dacă un plugin sau o actualizare de bază le modifică în mod specific. O coloană nu este definită doar în avans, dar tipul ei este definit și înainte ca înregistrările să fie introduse în ea. Tipuri precum numere (INT pentru numere întregi) casete de cuvinte (TEXT sau VARCHAR pentru câmpuri de text) și altele (DATETIME pentru dată și oră) sunt prestabilite în baza de date. Dacă WordPress (sau un hacker) încearcă să adauge în baza de date date care nu se potrivesc cu modelul prespecificat, baza de date nu va accepta datele.

O altă caracteristică uriașă a bazelor de date SQL se găsește în acronimul RDBMS: caracteristica relațională.

Tabelele SQL și chiar anumite chei dintr-un tabel au capacitatea de a se raporta la alte tabele și chei. Acest lucru permite utilizatorilor să construiască baze de date care au o legătură strânsă între ele, ceea ce înseamnă o organizare mai bună și o eficiență mai mare.

Să presupunem că doriți să construiți o bază de date de tweet-uri pe care să o vedeți mai târziu. Puteți construi un tabel care conține informații despre anumite tweet-uri pe care le-ați salvat, cum ar fi conținutul tweetului, câte favorite are și așa mai departe. De asemenea, ți-ar plăcea să salvezi date despre persoana care a postat-o ​​pe Twitter - cum se numește, câți urmăritori au, lucruri de genul ăsta.

Folosind baze de date relaționale, puteți crea un tabel de tweet care conține toate datele despre anumite tweet-uri și apoi puteți crea un tabel de utilizator care conține toate informațiile despre persoana care a trimis tweet-ul în cauză. Ați putea apoi să relaționați cheile din cele două tabele, astfel încât baza de date (și, prin urmare, dvs.) știe care utilizator este asociat cu ce tweet.

WordPress utilizează tabele relaționale pentru a raporta o mulțime de date. De exemplu, tabelul wp_posts conține toate datele relevante despre o singură postare pe WordPress. Tabelul wp_comments conține fiecare comentariu pe care cineva l-a lăsat la o postare WordPress, dar wp_posts și wp_comments sunt două tabele diferite din aceeași bază de date. WordPress construiește o relație între anumite chei din tabelul wp_comments și tabelul wp_posts, astfel încât WordPress să-și dea seama ce comentariu aparține cărei postări de blog.

Această bază de date și structura tabelului sunt construite într-o bază de date MySQL atunci când ați configurat inițial WordPress. De acolo, WordPress manipulează doar valorile, sau rândurile, din fiecare tabel pentru a face site-ul dvs. să funcționeze.

De exemplu, când creați un utilizator nou, un rând care conține toate datele despre utilizator (cum ar fi numele de utilizator, parola și nivelul de permisiune) este inserat în tabelul wp_users. Când un utilizator se conectează, WordPress accesează baza de date și verifică informațiile furnizate în ecranul de conectare cu baza de date. Dacă nu se potrivesc, autentificarea este respinsă.

Cum folosește MySQL memorarea în cache

WP Fără cache

WordPress și MySQL fără cache.

Același concept se aplică postărilor: atunci când scrieți și salvați o postare nouă, WordPress o salvează ca un rând în baza de date wp_posts. Este important de reținut că și inversul acestui lucru este adevărat: atunci când o persoană care vizualizează un site web accesează o pagină cu conținut pe ea, WordPress trebuie să acceseze baza de date, să scoată datele din tabele și apoi să le redea pe ecranul său. Pentru câțiva vizitatori, un server normal poate gestiona această încărcare foarte bine. Dar dacă mulți oameni solicită conținut de pe site, WordPress și baza de date nu vor putea ține pasul cu toate solicitările, iar site-ul se poate plia. De aceea este atât de importantă folosirea unui motor de stocare în cache sau a unui plugin.

Pentru a deveni din nou puțin tehnic, este important să înțelegeți costul de calcul. În acest caz, costul nu înseamnă să cheltuiești bani sau să cumperi lucruri. Înseamnă evaluarea mai multor factori diferiți care sunt importanți pentru viteza de calcul, cum ar fi timpul, memoria disponibilă și numărul de operațiuni pe disc care trebuie efectuate.

MySQL stochează toate aceste informații într-o bază de date de pe hard disk-ul computerului pe care este stocat. Acesta este un sistem cu adevărat grozav, deoarece este rezistent la defecțiuni, are mult spațiu de stocare și nu distruge memoria computerului pe care rulează. În comparație cu o bază de date precum Redis, care stochează totul în memoria RAM a computerului pe care rulează, MySQL oferă multă stabilitate și elimină îngrijorarea pierderii de date.

Cu toate acestea, stabilitatea MySQL vine cu un cost: viteza. A avea WordPress să acceseze continuu aceleași chei într-o bază de date de mai multe ori ar trebui să fie privit ca „scump”. Costă mult să accesezi baza de date, să faci o operație pe disc, să aduci acele date înapoi, apoi să le redezi.
Cache WP

WordPress și MySQL cu stocare în cache. Notă: serverele web, MySQL și de stocare în cache sunt în general rulate simultan pe același server. Această diagramă le separă în scop ilustrativ.

Memorarea în cache este o soluție excelentă la această problemă. Este nevoie de acel HTML redat final și se menține pe el pentru o perioadă scurtă de timp, poate 30 de secunde sau cam asa ceva. Dacă cineva solicită aceeași pagină, motorul de stocare în cache îi va oferi acea pagină deja redată, sărind peste întregul proces de interacțiune cu baza de date. De aceea, este esențial fie să instalați pluginuri de cache pentru WordPress, fie să utilizați un serviciu de găzduire gestionat care se ocupă de stocarea în cache pentru dvs. atunci când construiți site-uri web. Dacă o postare ajunge pe prima pagină a Reddit, de exemplu, site-ul tău se va plia sub presiunea noului trafic fără caching-ul instalat.

Cele unsprezece tabele MySQL ale WordPress

WP3.8-ERD

Tabelele MySQL implicite WordPress 3.8. Imagine prin amabilitatea WordPress Codex, licențiat sub GPL

Acum că înțelegem cum funcționează de fapt unele dintre aceste baze de date și tabele, să vorbim despre cele unsprezece tabele specifice pe care WordPress le stabilește și le folosește în mod implicit:

  • wp_commentmeta – Orice metadate asociate cu comentariile, cum ar fi cheile și valorile, sunt stocate în această bază de date. Nu deține metadate precum autorul și data de trimitere, ci mai degrabă date diverse pe care WordPress le folosește ocazional. Aceste date sunt uneori opționale sau nu sunt utilizate. Se referă direct la wp_comments.

  • wp_comments – Acest tabel conține toate comentariile făcute pe postările și paginile WordPress, precum și toate datele asociate, cum ar fi autorul, adresa lor de e-mail, data trimiterii și postarea în care a fost lăsat comentariul.

  • wp_links – Această bază de date este folosită pentru a conține date de link în postările WordPress, dar a fost retrasă cu câteva versiuni WordPress în urmă. Deși este încă acolo, este îndoielnic că îl vei vedea folosit.

  • wp_options – Toate opțiunile care au fost setate în panoul de setări sunt stocate în această bază de date.

  • wp_postmeta – La fel ca wp_commentmeta, wp_postmeta include date opționale despre postări. Cu excepția cazului în care există un caz de utilizare specific, acesta nu este probabil să fie intens utilizat.

  • wp_posts – wp_posts conține toate datele despre postări și datele asociate acestora. Acest tabel este foarte utilizat și conține tot conținutul unui site.

  • wp_terms – Acest tabel stochează conținut, cum ar fi etichete și categorii cu care sunt clasificate postările.

  • wp_term_relationships – Acest tabel este responsabil pentru menținerea relațiilor dintre postări și categoriile și etichetele asociate acestora. Există și o relație MySQL configurată aici: tabelul este de fapt conectat atât la postări, cât și la termeni prin tabelul wp_term_taxonomy.

  • wp_term_taxonomy – Aceasta se ocupă de urmărirea tipului de taxonomii asociate postărilor. Se leagă înapoi la wp_terms, precum și la wp_term_relationships și doar înregistrează asocieri cu categorii, etichete și așa mai departe.

  • wp_usermeta – Un alt tabel meta, wp_usermeta gestionează orice metadate opționale asociate cu wp_users.

  • wp_users – wp_users conține toate datele referitoare la utilizatorii WordPress, inclusiv informații precum numele de utilizator, drepturile de administrator și parolele criptate.

MySQL poate părea intimidant la început, dar cu WordPress, tabelele sunt așezate într-un mod care nu numai că are mult sens, ci și promovează viteza și eficiența. Data viitoare când lucrați la un site WordPress, gândiți-vă la structura bazei de date MySQL care alimentează site-ul. O înțelegere aprofundată a bazei de date a site-ului vă poate asigura că site-ul dvs. este sigur, solid și extrem de eficient.