Vodnik za WordPress database tabele

Uvod v WordPress podatkovno bazo
WordPress CMS rešitev uporablja podatkovno bazo MySQL ali MariaDB za shranjevanje praktično vsega na vaši spletni strani - od objav in strani do komentarjev, uporabniških podatkov, nastavitev in konfiguracij vtičnikov. Razumevanje strukture podatkovne baze je ključno za napredno administracijo WordPress strani, odpravljanje težav, optimizacijo zmogljivosti in pravilno izdelavo varnostnih kopij. Vsaka namestitev WordPress ustvari 12 privzetih tabel, ki skupaj tvorijo celovit sistem za upravljanje vsebine.
Privzeta predpona za WordPress tabele je wp_, vendar se priporoča sprememba predpone ob namestitvi iz varnostnih razlogov, saj napadalci, ki poskušajo izvesti napade SQL injection, pogosto ciljajo standardno predpono wp_. S spremembo v nekaj takega kot bh29_ otežite avtomatizirane napade. V tem vodniku uporabljamo standardno predpono wp_ zaradi jasnosti, vendar upoštevajte, da lahko vaša stran uporablja drugačno predpono.
wp_posts - srce WordPress
Struktura tabele
Tabela wp_posts je najpomembnejša tabela v WordPress podatkovni bazi, saj hrani vso vsebino, vključno z objavami, stranmi, priloženimi medijskimi datotekami, revizijami, postavkami menija in custom post types. Vsaka vrstica v tabeli predstavlja en vsebinski objekt s stolpci, kot so ID, ki je enolični identifikator, post_author, ki se sklicuje na uporabnika, ki je ustvaril vsebino, post_date za datum nastanka, post_content za glavno vsebino v formatu HTML, post_title za naslov, post_excerpt za kratek opis, post_status za status (publish, draft, pending, private, trash) in post_type za vrsto vsebine.
Vrste objav v wp_posts
Stolpec post_type določa vrsto vsebine. Vrednost post označuje blog objave, page označuje strani, attachment označuje naložene medijske datoteke, revision hrani prejšnje različice vsebine, nav_menu_item hrani postavke navigacijskega menija, custom post types pa imajo svoj slug. To pomeni, da imate lahko v isti tabeli na tisoče objav, na stotine strani, na tisoče medijskih datotek in na desettisoče revizij. Revizije so pogost vzrok napihovanja baze, saj WordPress privzeto hrani neomejeno število revizij za vsako objavo.
Optimizacija wp_posts
Omejite število revizij z dodajanjem konstante WP_POST_REVISIONS v wp-config.php. Vrednost 5 hrani zadnjih 5 revizij za vsako objavo, kar je dovolj za večino strani. Periodično brišite stare revizije, auto-draft objave in izbrisane objave iz koša z vtičnikom WP-Optimize ali z neposredno SQL poizvedbo. Za strani z velikim številom objav indeksiranje stolpcev post_type in post_status pospeši poizvedbe. Če uporabljate custom post types z WP_Query, v poizvedbi vedno določite post_type, da se izognete pregledovanju celotne tabele.
wp_postmeta - metapodatki vsebine
Struktura in namen
Tabela wp_postmeta hrani dodatne podatke o vsebini, ki niso pokriti s stolpci v wp_posts. Struktura je model EAV (Entity-Attribute-Value) s štirimi stolpci - meta_id, post_id, ki se sklicuje na wp_posts, meta_key, ki je ime metapodatka, in meta_value, ki je vrednost. V tej tabeli ACF (Advanced Custom Fields) hrani vsa prilagojena polja, WooCommerce hrani cene in atribute izdelkov, WordPress pa hrani ID predstavitvene slike, datoteko predloge, serializirane podatke in še veliko več.
Težava z wp_postmeta
Tabela wp_postmeta je najpogostejši vzrok težav z zmogljivostjo, ker zelo hitro raste. Vsaka objava ima lahko na desetine ali stotine metapodatkov. ACF doda vsaj dve vrstici na polje (vrednost in referenco), WooCommerce doda 20 do 50 metapodatkov na izdelek, vsak vtičnik pa lahko doda svoje metapodatke. Stran s 1.000 objavami ima zlahka 100.000 ali več vrstic v wp_postmeta. Manjkajoč ali neoptimalen indeks na stolpcu meta_key je pogost vzrok počasnih poizvedb.
Optimizacija wp_postmeta
Dodajte indeks na stolpec meta_key, če ne obstaja, saj ima privzeti WordPress indeks na tem stolpcu omejeno dolžino. Uporabite vtičnik WP-Optimize ali Advanced Database Cleaner, da prepoznate in izbrišete osirotele metapodatke, ki pripadajo izbrisanim objavam. Za pogoste poizvedbe meta_query razmislite o ustvarjanju prilagojene tabele namesto uporabe wp_postmeta, saj je prilagojena tabela s specifičnimi stolpci veliko hitrejša od modela EAV. Izogibajte se shranjevanju velikih serializiranih nizov v meta_value, ker jih ni mogoče učinkovito iskati.
wp_options - nastavitve strani
Struktura in vsebina
Tabela wp_options hrani vse nastavitve WordPress strani, vključno z imenom strani, URL, e-pošto administratorja, aktivno temo, aktivnimi vtičniki, strukturo permalinkov, časovnim pasom in stotinami drugih nastavitev. Vsak vtičnik in tema lahko dodata svoje vrstice v wp_options za shranjevanje konfiguracije. Stolpec autoload z vrednostjo yes ali no določa, ali se opcija samodejno naloži ob vsaki zahtevi ali šele, ko je specifično zahtevana.
Težava z autoload
WordPress ob vsaki zahtevi naloži vse opcije z autoload=yes v pomnilnik. Če imate veliko vtičnikov, ima lahko ta tabela na stotine autoloaded opcij s skupno velikostjo nekaj megabajtov. To porablja RAM in upočasnjuje vsako zahtevo, tudi za strani, ki teh opcij ne uporabljajo. Skupno velikost autoloaded opcij preverite s SQL poizvedbo, ki sešteje velikost option_value za vse vrstice, kjer je autoload yes. Če rezultat presega 1 MB, imate težavo, ki jo je treba rešiti.
Čiščenje wp_options
Vtičniki, ki so bili odstranjeni, pogosto pustijo svoje opcije v tabeli, ker WordPress nima samodejnega mehanizma za čiščenje. Transient podatki, ki so začasni predpomnilnik, se hranijo v wp_options s ključi, ki se začnejo z _transient_, in lahko nakopičijo na tisoče vrstic. Uporabite vtičnik, kot je Advanced Database Cleaner, da prepoznate opcije izbrisanih vtičnikov in zastarele transiente. Ročno lahko v phpMyAdmin s SQL poizvedbo spremenite autoload na no za opcije, ki se redko uporabljajo, vendar bodite previdni, da ne spremenite osnovnih WordPress opcij.
wp_users in wp_usermeta
Uporabniški podatki
Tabela wp_users hrani osnovne uporabniške podatke, vključno z ID, user_login za uporabniško ime, user_pass za zgoščeno geslo, user_nicename za URL-prijazno različico imena, user_email, user_url za spletno stran uporabnika, user_registered za datum registracije, user_activation_key za aktivacijo računa in user_status. WordPress za gesla uporablja zgoščevanje phpass s prilagodljivim številom iteracij za zaščito pred napadi brute force na zgostitve.
Uporabniški metapodatki
Tabela wp_usermeta ima enako strukturo EAV kot wp_postmeta in hrani dodatne uporabniške podatke, kot so vloga uporabnika v wp_capabilities, raven dostopa v wp_user_level, preference administracijske plošče, razporeditev dashboard widgetov in vsa prilagojena uporabniška polja. WooCommerce doda naslov za dostavo in obračun kot uporabniške metapodatke. Vtičniki za članstvo in LMS lahko dodajo na desetine metapodatkov na uporabnika. Za strani z veliko uporabniki lahko wp_usermeta postane zelo velika tabela.
Tabele komentarjev in povezav
wp_comments in wp_commentmeta
Tabela wp_comments hrani vse komentarje na objave s stolpci za ID komentarja, post_id za povezavo z objavo, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_content, comment_approved za status odobritve, comment_parent za odgovore na komentarje in user_id za registrirane uporabnike. Neželeni komentarji se označijo z comment_approved=spam, vendar ostanejo v tabeli, dokler jih ne izbrišete. Vtičnik Akismet in podobna orodja proti neželeni pošti uporabljajo wp_commentmeta za shranjevanje spam ocene in drugih metapodatkov.
wp_terms, wp_termmeta in wp_term_taxonomy
WordPress za taksonomije uporablja tri tabele. Tabela wp_terms hrani same izraze z ID, name za ime, slug za URL in term_group za združevanje. Tabela wp_term_taxonomy povezuje izraze s taksonomijami in hrani vrsto taxonomy, description, parent ID za hierarhijo in count za število objav. Tabela wp_term_relationships je vezna tabela, ki povezuje objave z izrazi s stolpcema object_id za ID objave in term_taxonomy_id. Tabela wp_termmeta doda možnost shranjevanja metapodatkov za izraze, kot je slika kategorije ali barva.
Optimizacija WordPress podatkovne baze
Redno vzdrževanje
WordPress podatkovna baza zahteva redno vzdrževanje za optimalno zmogljivost. Ključna dejanja vključujejo brisanje revizij objav, starejših od 30 dni, čiščenje auto-draft in trashed objav, brisanje neželenih in zavrženih komentarjev, odstranjevanje pretečenih transientov iz wp_options, optimizacijo tabel z ukazom OPTIMIZE TABLE in preverjanje integritete tabel z ukazom CHECK TABLE. Vtičnik WP-Optimize avtomatizira vse te operacije z možnostjo razporejanja tedenskega ali mesečnega čiščenja.
Indeksi in zmogljivost
Indeksi so ključni za hitrejše poizvedbe v podatkovni bazi. WordPress ustvari privzete indekse, vendar lahko za strani z velikim številom objav ali prilagojenimi poizvedbami dodatni indeksi znatno izboljšajo zmogljivost. Uporabite EXPLAIN pred SQL poizvedbo v phpMyAdmin, da vidite, ali poizvedba uporablja indekse ali izvaja full table scan. Za pogoste poizvedbe meta_query na specifičnem meta_key dodajte sestavljen indeks na stolpca post_id in meta_key v wp_postmeta. Orodje Query Monitor, WordPress vtičnik, prikazuje vse SQL poizvedbe na strani s časi izvajanja in prepozna počasne poizvedbe.
Velikost podatkovne baze
Redno spremljajte velikost podatkovne baze, saj napihnjena baza upočasni varnostne kopije, migracije in vsakodnevne operacije. Povprečen WordPress blog naj ima bazo manjšo od 100 MB. Če je vaša baza večja od 500 MB, imate verjetno težavo z revizijami, transienti ali podatki vtičnikov. WooCommerce strani z veliko izdelki in naročili imajo naravno večje baze, vendar tudi takrat morate čistiti zastarele podatke. Pri BeoHosting naši paketi gostovanja vključujejo dovolj prostora za podatkovno bazo, vendar optimizirana baza pomeni hitrejšo stran za vaše obiskovalce.
Varnostna kopija WordPress podatkovne baze
Metode za varnostno kopiranje
Obstaja več načinov za izdelavo varnostne kopije WordPress podatkovne baze. Funkcija izvoza phpMyAdmin omogoča ročni prenos datoteke SQL dump z vsemi tabelami in podatki. Ukaz WP-CLI wp db export ustvari dump datoteko iz ukazne vrstice, kar je primerno za avtomatizacijo. WordPress vtičniki, kot so UpdraftPlus, BackWPup in All-in-One WP Migration, zagotavljajo avtomatizirane razporejene varnostne kopije z nalaganjem v oblak, kot je Google Drive, Dropbox ali Amazon S3. Pri BeoHosting izdelujemo samodejne dnevne varnostne kopije celotnega računa gostovanja, vključno s podatkovno bazo, z možnostjo obnovitve z enim klikom v cPanel.
Best practices za varnostno kopiranje
Varnostno kopijo izdelajte pred vsako posodobitvijo WordPress, teme ali vtičnika. Varnostne kopije hranite na več lokacijah, ne samo na istem strežniku. Periodično preizkusite obnovitev varnostne kopije v staging okolju, da potrdite, da so kopije pravilne. Avtomatizirajte dnevne varnostne kopije s politiko hranjenja vsaj 30 dni. Za e-commerce strani s pogostimi transakcijami razmislite o varnostni kopiji vsakih 6 ali 12 ur. Šifrirajte varnostne kopije, ki vsebujejo občutljive podatke, kot so uporabniške informacije ali podatki o plačilu.
Napredne teme
Multisite tabele
Namestitev WordPress Multisite ustvari dodatne tabele za upravljanje omrežja strani. Tabela wp_blogs vsebuje informacije o vsaki strani v omrežju, wp_site hrani podatke o omrežju in wp_sitemeta hrani metapodatke omrežja. Vsaka stran v omrežju dobi svoj nabor tabel s predpono, ki vključuje ID strani, kot je wp_2_posts za drugo stran, wp_3_options za tretjo stran in tako naprej. To pomeni, da ima namestitev Multisite z 10 stranmi več kot 120 tabel v bazi.
Prilagojene tabele
Za vtičnike in teme s specifičnimi zahtevami glede podatkov je ustvarjanje prilagojenih tabel pogosto boljše od uporabe wp_postmeta. Prilagojena tabela s specifičnimi stolpci in indeksi je dramatično hitrejša za poizvedbe kot model EAV v wp_postmeta. Uporabite WordPress funkcijo dbDelta za ustvarjanje in posodabljanje prilagojenih tabel, saj samodejno primerja obstoječo strukturo z želeno in uporabi le potrebne spremembe. Registrirajte aktivacijo vtičnika z register_activation_hook za ustvarjanje tabel ob namestitvi vtičnika in zagotovite deinstalacijski hook za čiščenje ob brisanju vtičnika.
Zaključek
Razumevanje WordPress database tabel je temeljno znanje za vsakega resnega WordPress administratorja in razvijalca. Tabeli wp_posts in wp_postmeta hranita vso vsebino, wp_options hrani konfiguracijo, wp_users in wp_usermeta pa uporabniške podatke. Redno vzdrževanje baze z brisanjem nepotrebnih revizij, transientov in osirotelih podatkov ohranja stran hitro. Pravilno indeksiranje pospešuje poizvedbe, redne varnostne kopije pa zavarujejo podatke pred izgubo. Pri BeoHosting naši optimizirani MySQL strežniki in samodejne varnostne kopije zagotavljajo zanesljivo osnovo za vašo WordPress stran s podporo, ki pozna podatkovne baze od znotraj.
BeoHosting Ekipa
10+ let izkušenj — Strokovnjaki za spletno gostovanje in infrastrukturo
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Zadnja posodobitev: