Pomalá databáze WordPress – problém s transient

178
Zobrazení

Problém s databází u WordPress většinou naznačuje dlouhé načítání stránek. To je doba, za kterou prohlížeči pošle server odpověď o žádost stránky. Může se jednat o dlouhé vteřiny, ale také místo stránky se dočkáte jen chyby 503, prostě vyčerpání prostředků.

Dneska se však budeme věnovat čistě databázi. Jestliže nestíhá, je dobré podívat se na jednotlivé tabulky a zjistit, co je špatně. Nejčastěji je problémem velké množství dat v tabulkách. Nejjednodušší je využít rozhraní phpMyAdmin, které značně ulehčí práci s databází. Dávejte si však pozor. V databázi jsou uložena všechna data. Doslova na dva kliky můžete přijít o kompletní obsah.

Databázi většinou nevytěžuje objem, ale počet záznamů (záleží samozřejmě na SQL dotazu). Zaměříme se na tabulku wp_options. Jedná se o nejvytíženější tabulku ve WordPress. WordPress z ní neustále čte, zapisuje a přepisuje data. Počet záznamů v ní, tak má přímý vliv na výkon WordPress. Je těžké říct, kolik je běžná velikost této tabulky, protože jí využívají pluginy rozdílně. Průměrný WordPress by měl mít do 1000 řádek s velikostí maximálně stovek kilobajtů. Ovšem například plugin WooCommerce tuto tabulku dokáže využívat i mnohokrát více. Pokud však počet záznamů naroste do desítek tisíc, popřípadě desítek megabajtů už se jedná o problém, který je třeba řešit na programátorské úrovni.

Pokud máte problém právě s tabulkou wp_options mohou za tím být záznamy, které obsahují v option_name hodnotu _transient_. Někdy jejich počet může dosáhnout tisíce či dokonce desítek tisíc.

K čemu slouží Transient ve WordPress

WordPress si většinou do transient ukládá data, která se náročně získávají a tato data mají nějakou trvanlivost. Aby je nemusel opakovaně získávat při každém spuštění skriptu prostě si je uloží na určitou dobu. Jedná se o určitou formu dočasné paměti (cache). Transient se skládají z klíče (název), hodnoty (co obsahují) a délky života (ve vteřinách).

 

Příliš mnoho transcient zpomaluje WordPress

Pluginy by po sobě měly vždy vyčistit nepořádek. Někdy to však nemusí udělat, jindy zase může vzniknout nechtěně velké množství transcient záznamů (klidně i stovky tisíc). Právě tohle povede k velkému zpomalení WordPress.

Tabulka je přeplněná záznamy transient. Většina z nich není potřebná. Jedná se o pozůstatky pluginů.

 

Transcient záznamy můžete vyčistit jednoduchým SQL příkazem:

DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%')

* wp_options se jmenuje předkonfigurovaná tabulka, ta vaše může být něcojiného_options.

 

Po provedení operace je třeba tabulku optimalizovat.

Provedete to následujícím SQL dotazem.

OPTIMIZE TABLE `wp_options`

 

Zatímco u cachovaného obsahu není rychlení nijak znatelné, tak u necachovaného, jako je třeba administrace, je velice znát. Stránka se nenahrává 1 – 3 vteřiny ale jen zlomek vteřiny.

Pokud si na něj netroufáte anebo nemáte přístup k databázi, zkuste plugin Transients Manager. Pozor v případě opravdu velkého problému, nemusí stačit a bez ručního promazání po určitém počtu se neobejdete (na konec SQL se přidá LIMIT 1000).

(178)

Pomalá databáze WordPress – problém s transient