Aktualizovaný obsah, původně publikovaný v červnu 2018
V jádru každého WordPress webu je databáze MySQL, která ukládá příspěvky, stránky, komentáře, nastavení pluginů a šablon. Postupem času, při přidávání obsahu nebo nárůstu návštěvnosti, databáze zaplní nepotřebná data. To zpomaluje dotazy a načítání stránek, což negativně ovlivňuje SEO a uživatelský zážitek. Optimalizace databáze odstraňuje nadbytečná data a zrychluje web. Začneme s jednoduchými pluginy a postupně přejdeme k ručnímu SQL. Pravidlo č.1: vždy vytvořte úplnou zálohu. Použijte WP Database Backup nebo WP-DB-Backup před provedením změn.
Každé načtení stránky spouští dotazy do databáze. Pokud jsou tabulky zaplněné starými verzemi příspěvků, spamem nebo dočasnými daty, i jednoduché dotazy běží pomalu. Zpoždění je patrné zejména při špičkové návštěvnosti a Google PageSpeed Insights často ukazuje tyto problémy jako vliv na Core Web Vitals.
Optimalizace také snižuje zatížení serveru. Na sdíleném hostingu snižuje riziko překročení limitů, na VPS umožňuje efektivnější využití zdrojů. Udržování databáze čisté je klíčové pro stabilní a rychlý web.
Automatizaci lze provádět pomocí pluginů nebo ručně. Pro začátek jsou pluginy bezpečnější, pokud máte aktuální zálohu.
Plugin WP-Optimize usnadňuje čištění. Nainstalujte a aktivujte přes administraci WordPress, otevřete nastavení. Zde můžete odstranit spam a nepotvrzené komentáře, staré revize příspěvků a prázdné mezery v tabulkách. Vyberte, co potřebujete, a spusťte optimalizaci. Po dokončení lze plugin deaktivovat.
Plugin WP-Sweep od Lester Chan je také efektivní. Po instalaci (Nástroje → Sweep) zobrazuje statistiky nevyužitých dat v tabulkách. Můžete spustit kompletní nebo postupnou optimalizaci. Funguje podobně jako WP-Optimize a poskytuje přehledné reporty.
Pokud máte přístup k hostingové administraci (např. cPanel), využijte phpMyAdmin. Přihlaste se, vyberte databázi webu (wp-config.php
), označte tabulky nebo klikněte na "Check All" a zvolte "Optimize table" v menu "With selected". Tím se provede OPTIMIZE TABLE, který reorganizuje data a sníží fragmentaci, což zlepší výkon.
Před jakýmikoli změnami vždy vytvořte zálohu databáze.
Pokud jste pohodlní s SQL, můžete provádět ruční čištění databáze. Vždy testujte na kopii databáze před použitím na produkčním webu.
Odstranění starých revizí příspěvků:
DELETE a,b,c FROM wp_posts a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) LEFT JOIN wp_term_taxonomy d ON (b.term_taxonomy_id = d.term_taxonomy_id) WHERE a.post_type = 'revision' AND d.taxonomy != 'link_category';
Odstranění spamu:
DELETE FROM wp_comments WHERE comment_approved = 'spam';
Odstranění nepotvrzených komentářů:
DELETE FROM wp_comments WHERE comment_approved = '0';
Odstranění nevyužitých tagů:
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 ); DELETE FROM wp_term_taxonomy WHERE term_id NOT IN (SELECT term_id FROM wp_terms); DELETE FROM wp_term_relationships WHERE term_taxonomy_id NOT IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);
Odstranění transient:
DELETE FROM wp_options WHERE option_name LIKE ('%_transient_%');
Pomalé dotazy (několik sekund) jsou častým problémem. Aktivujte slow_query_log
v my.cnf
:
slow_query_log = /var/log/mysql/mysql-wp-slow.log long_query_time = 5
Restartujte MySQL. Dotazy delší než 5 sekund budou zaznamenány pro analýzu a optimalizaci.
Po optimalizaci zkontrolujte rychlost přes Google PageSpeed Insights nebo GTmetrix. Pokud je web stále pomalý, zvažte CDN nebo změnu operačního systému serveru (Ubuntu, CentOS Stream).
Upozornění! Vždy mějte aktuální zálohu před optimalizací. Použijte WP Database Backup, WP-DB-Backup nebo hostingovou administraci.