wp_options-taulu on WordPressin sydämen kannalta yksi tärkeimmistä, mutta samalla yksi aliarvostetuimmista tauluista. Se sisältää asetuksia, jotka ladataan usein jokaisella sivulatauksella, ja juuri siksi sen koko, rakenne ja sisältö vaikuttavat suoraan suorituskykyyn, muistinkäyttöön ja jopa vakauteen.
wp_options ei yleensä hajoa kerralla. Se rappeutuu hitaasti, huomaamatta, kunnes sivusto tuntuu mystisesti raskaalta ilman selkeää syytä.
Mikä wp_options-taulu oikeasti on
wp_options sisältää WordPressin ja lisäosien:
-
globaalit asetukset
-
välimuistiarvot
-
transientit
-
tilapäiset liput
-
integraatioiden konfiguraatiot
Taulun erityispiirre on autoload-sarake. Kaikki rivit, joissa autoload = 'yes', ladataan automaattisesti PHP-muistiin jokaisella pyynnöllä.
Tämä tekee wp_options-taulusta poikkeuksellisen kriittisen.
Autoload on suorituskyvyn avain
Mitä autoload tarkoittaa käytännössä
Kun WordPress käynnistyy, se:
-
hakee kaikki autoloadatut optionit yhdellä kyselyllä
-
deserialisoi ne PHP-muistiin
-
pitää ne käytettävissä koko requestin ajan
Jos autoload-dataa on:
-
muutama sata kilotavua → ei ongelmaa
-
useita megatavuja → ongelma
Moni WordPress-sivusto kärsii nimenomaan liiallisesta autoload-datasta, ei koko taulun koosta.
Yleinen virhe lisäosissa
Monet lisäosat:
-
tallentavat suuria datastruktuureja wp_optionsiin
-
asettavat ne autoload-tilaan
-
eivät koskaan siivoa niitä
Lisäosan poisto ei automaattisesti tarkoita optionien poistoa.
Miten wp_options kasvaa hallitsemattomasti
Poistetut lisäosat ja teemat
WordPress ei siivoa jälkiä puolestasi. Kun lisäosa poistetaan:
-
optionit jäävät usein paikoilleen
-
transientit voivat jäädä pysyvästi
-
autoload-arvot jäävät kuormittamaan jokaista sivulatausta
Ajan myötä wp_options muuttuu lisäosahautausmaaksi.
Transientit, jotka eivät ole transientteja
Transienttien idea on olla väliaikaisia. Todellisuudessa:
-
virheellisesti määritellyt transientit eivät vanhene
-
cron-ongelmat estävät siivouksen
-
nimetyt transientit jäävät pysyvästi tauluun
Tämä on erityisen yleistä WooCommerce-sivustoilla.
Custom-koodi väärässä paikassa
Custom-koodi, joka:
-
tallentaa suuria array-rakenteita optioniin
-
käyttää options-taulua välimuistina
-
ei hallitse elinkaarta
on varma tapa kasvattaa wp_options hallitsemattomasti.
Oireet, jotka viittaavat wp_options-ongelmaan
Tyypillisiä merkkejä:
-
hidas TTFB myös cache ohitettuna
-
korkea PHP-muistinkäyttö heti bootstrapissa
-
admin tuntuu raskaalta
-
sivusto hidastuu, vaikka liikenne ei kasva
Nämä oireet eivät näy frontend-optimoinneissa, koska ongelma on syvällä bootstrap-vaiheessa.
wp_optionsin siivous käytännössä
Autoload-datan analyysi
Ensimmäinen askel ei ole poisto, vaan ymmärrys:
-
kuinka paljon autoload-dataa ladataan
-
mitkä optionit vievät eniten tilaa
-
mihin lisäosaan tai teemaan ne liittyvät
Yleinen nyrkkisääntö:
-
autoload-data alle 1 Mt → yleensä ok
-
yli 1–2 Mt → vaatii toimenpiteitä
Turvallinen siivousajattelu
wp_optionsia ei pidä siivota aggressiivisesti ilman kontekstia. Virheellinen poisto voi:
-
rikkoa lisäosan toiminnan
-
nollata asetuksia
-
aiheuttaa vaikeasti jäljitettäviä bugeja
Siivous on harkintaa, ei “DELETE WHERE LIKE” -harjoitus.
Autoloadin optimointi
Kaiken ei tarvitse olla autoloadissa
Moni option:
-
tarvitaan vain adminissa
-
käytetään harvoin
-
liittyy taustaprosesseihin
Näiden ei kuulu olla autoloadattuja. Hyvin optimoidussa wp_optionsissa autoloadissa on vain:
-
aidosti globaalit asetukset
-
kevyet arvot
-
usein tarvittava data
Autoload ei ole cache
wp_options ei ole välimuistiratkaisu. Jos data:
-
on suuri
-
muuttuu usein
-
on käyttäjäkohtainen
se ei kuulu options-tauluun, saati autoloadiin.
Transienttien hallinta
Miksi transientit jäävät jumiin
Transientit jäävät usein, koska:
-
WP-Cron ei toimi
-
aikakatkaisut estävät siivouksen
-
transientti on tallennettu väärin
wp_optionsin siivous paljastaa usein syvemmän cron-ongelman.
Object cache muuttaa pelin
Kun käytössä on Redis tai Memcached:
-
transientit siirtyvät pois wp_optionsista
-
taulu kevenee automaattisesti
-
suorituskyky paranee
Ilman object cachea transienttien hallinta on kriittisempää.
wp_options ja skaalautuvuus
wp_options on yksi niistä tauluista, jotka:
-
kasvavat lineaarisesti ajan kanssa
-
kuormittavat kaikkia pyyntöjä
-
eivät skaalaudu itsestään
Hyvin hoidettu wp_options:
-
tekee WordPressistä ennustettavamman
-
pienentää PHP-FPM:n kuormaa
-
parantaa cold cache -suorituskykyä
Huonosti hoidettu wp_options syö resurssit ennen kuin liikenne edes kasvaa.
Milloin siivous kannattaa tehdä
Hyvä hetki wp_options-siivoukselle on:
-
suurten lisäosapoistojen jälkeen
-
suorituskykyongelmien ilmetessä
-
ennen PHP- tai WordPress-päivitystä
-
osana teknistä auditointia
Siivous ei ole kertaluontoinen projekti. Se on osa ylläpitoa.
Yleisimmät virheet wp_optionsin optimoinnissa
Yleisimpiä virheitä ovat:
-
massapoisto ilman analyysiä
-
autoloadin poistaminen ymmärtämättä vaikutuksia
-
transienttien syyttäminen, kun ongelma on cronissa
-
optimoinnin tekeminen ilman varmuuskopiota
wp_options on kriittinen taulu. Sitä käsitellään kirurgin, ei siivoojan, ottein.
Lopuksi: wp_options kertoo sivuston historiasta
wp_options-taulu on WordPress-sivuston muistijälki. Se kertoo:
-
mitä lisäosia on käytetty
-
mitä kokeiluja on tehty
-
mitä on jätetty siivoamatta
Kun wp_options pidetään hallinnassa, WordPress ei ainoastaan nopeudu. Se muuttuu ennustettavammaksi, vakaammaksi ja helpommin ylläpidettäväksi.
Usein suurin suorituskykyhyppy ei tule uudesta palvelimesta, vaan yhdestä siivotusta taulusta.
