Технічна оптимізація

Оптимізація бази даних WordPress: хитрощі MySQL поза плагінами

Оптимізація бази даних WordPress у phpMyAdmin

Чому оптимізація бази даних важлива

Повільна робота веб-сайту WordPress не завжди пов'язана з великими зображеннями або слабким хостингом. Дуже часто справжнє вузьке місце ховається всередині бази даних MySQL. У міру зростання WordPress накопичує непотрібні дані, такі як старі метадані, застарілі перехідні дані, невикористані опції з видалених плагінів, записи postmeta, що залишилися без даних, та тисячі завдань cron, які ніколи не виконуються належним чином.

Більшість користувачів намагаються вирішити проблему за допомогою плагінів баз даних. Ці інструменти корисні для базового очищення, але вони не можуть вирішити глибші структурні проблеми, такі як роздуті автоматично завантажені дані або неефективні індекси. Ручна оптимізація MySQL дає вам реальний контроль і розблоковує приріст продуктивності, якого не можуть досягти плагіни.

Оптимізація бази даних впливає на TTFB, швидкість серверної частини, продуктивність WooCommerce, використання процесора та загальне навантаження на сервер. Завдяки правильному ручному налаштуванню ваш веб-сайт стає швидшим, стабільнішим та набагато масштабованішим.

Якщо ви хочете поєднати налаштування бази даних із повноцінним покращенням продуктивності, ознайомтеся з нашими Сервіс оптимізації швидкості WordPress.

Розуміння основних таблиць WordPress

Щоб ефективно оптимізувати базу даних, потрібно розуміти, що робить кожна таблиця та чому вона може роздутися.

wp_options
Зберігає глобальні налаштування WordPress, конфігурації плагінів та кешовані дані. Найважливіший стовпець – автозавантаження, яка завантажується при кожному запиті сторінки. Якщо ця таблиця містить мегабайти непотрібних автоматично завантажених записів, ваш TTFB постраждає.

wp_postmeta
Містить метадані для публікацій, сторінок та продуктів WooCommerce. Часто містить невикористані або осиротілі дані з видалених публікацій та редакцій.

wp_cron
Зберігає всю систему запланованих завдань WordPress. Коли плагіни неодноразово реєструють події, ця таблиця може виходити з-під контролю.

ПРОЧИТАЙТЕ  Розумна оптимізація бази даних WordPress для усунення роздуття та підвищення швидкості

Перехідні процеси
Тимчасові кешовані значення зберігаються всередині wp_options. Вони часто закінчуються без автоматичного видалення.

У справній базі даних ці таблиці залишаються невеликими, індексованими та вільними від застарілого або осиротілого вмісту.

1. Очищення wp_options та зменшення розміру автозавантаження

Таблиця wp_options має найбільший вплив на продуктивність. Мета полягає в тому, щоб зменшити кількість автоматично завантажених даних до менш ніж 1 МБ.

Перевірте загальний стан таблиці:

SELECT COUNT(*) AS total_rows,
ROUND(SUM(LENGTH(option_value)) / 1024 / 1024, 2) AS size_mb,
SUM(CASE WHEN autoload='yes' THEN 1 ELSE 0 END) AS autoloaded
FROM wp_options;

Знайдіть найважчі автоматично завантажені записи:

Перевірка розміру автоматично завантажених опцій за допомогою Query Monitor
SELECT option_name, LENGTH(option_value)/1024 AS size_kb
FROM wp_options
WHERE autoload='yes'
ORDER BY size_kb DESC
LIMIT 30;

Ви часто бачитимете залишки даних від невикористаних плагінів, величезні журнали відстеження або дані сеансів WooCommerce, термін дії яких мав би закінчитися, але цього не сталося.

Видаліть непотрібні опції:

DELETE FROM wp_options
WHERE option_name='old_plugin_cache_data';

Якщо плагін було видалено неправильно, може залишитися багато невикористаних опцій. Зменшення розміру автоматично завантажених даних з 5–10 МБ до менш ніж 1 МБ може значно покращити час відгуку сервера.

2. Очищення wp_postmeta та видалення застарілих метаданих

Таблиця wp_postmeta зазвичай є найбільшою в будь-якій інсталяції WordPress, особливо на сайтах WooCommerce. З часом вона збирає метадані, пов’язані з публікаціями, яких більше не існує.

Визначення осиротілих записів postmeta:

SELECT COUNT(*)
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;

Безпечно видаліть їх:

DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;

Видаліть порожні або невикористані метадані:

DELETE FROM wp_postmeta
WHERE meta_value = '' OR meta_value IS NULL;

Після очищення запити, що містять postmeta (особливо сторінки товарів WooCommerce), стають значно швидшими.

ПРОЧИТАЙТЕ  Ваш інтернет-магазин працює повільно, але PageSpeed показує 95? Правда про фільтри, варіації та втрачених клієнтів — і як це виправити

3. Видалення прострочених та невикористаних перехідних процесів

Транзиенти зберігають тимчасову кешовану інформацію для плагінів та функціональності теми. WordPress повинен автоматично видаляти застарілі транзиенти, але насправді вони часто залишаються застряглими в таблиці wp_options.

Видаліть усі перехідні процеси:

DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
OR option_name LIKE '_site_transient_%';

Видалити лише прострочені перехідні дані:

DELETE FROM wp_options
WHERE option_name LIKE '_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();

Деякі сайти накопичують десятки тисяч прострочених перехідних даних, що значно уповільнює пошук у базі даних.

4. Очищення wp_cron та зменшення перевантаження запланованих завдань

Внутрішня система wp-cron часто перевантажується дублікатами або зависаючими завданнями. Це може уповільнити продуктивність як фронтенду, так і адміністративної панелі WordPress.

Перевірте розмір cron:

SELECT LENGTH(option_value)/1024/1024 AS cron_size_mb
FROM wp_options
WHERE option_name='cron';

Якщо запис cron надзвичайно великий, скиньте його:

DELETE FROM wp_options WHERE option_name='cron';

WordPress автоматично відтворить запис cron під час наступної запланованої події.

Для підвищення надійності вимкніть вбудований cron та використовуйте справжнє системне завдання cron.

Додати до wp-config.php:

define('DISABLE_WP_CRON', true);

Потім налаштуйте cron на рівні сервера для виклику:

https://yourdomain.com/wp-cron.php?doing_wp_cron

Це зменшує піки навантаження на процесор і робить планування передбачуваним.

5. Оптимізація таблиць та додавання корисних індексів

Після очищення бази даних запустіть оптимізацію фізичних таблиць для дефрагментації сховища та покращення продуктивності:

OPTIMIZE TABLE wp_options, wp_posts, wp_postmeta, wp_comments, wp_commentmeta;

Для великих таблиць postmeta додавання індексу може значно підвищити продуктивність запитів:

ALTER TABLE wp_postmeta ADD INDEX meta_key_idx (meta_key(191));

Це особливо допомагає при використанні WooCommerce або розширених користувацьких полів.

6. Автоматизація процесу за допомогою WP-CLI

Для розробників та агентств автоматизація економить години часу на обслуговування.

ПРОЧИТАЙТЕ  Оптимізація мобільного кешу WordPress: реальні конфігурації для LiteSpeed, WP Rocket та Fastest Cache

Корисні команди WP-CLI:

wp transient delete --expired
wp db optimize
wp option delete old_plugin_data

Заплануйте їх виконання за допомогою cron-завдання на щотижневе або щомісячне виконання для постійної оптимізації.

Реальний приклад: результати оптимізації SpeedWP Pro

Клієнт WooCommerce звернувся до нас із серйозними проблемами з продуктивністю:

  • Розмір бази даних: 380 МБ

  • Автоматично завантажені дані: 6,2 МБ

  • TTFB: 700–900 мс

  • Надзвичайно повільна панель адміністратора

Після ручної оптимізації:

  • Видалено 140 000 прострочених транзиентів

  • Зменшено автозавантаження з 6,2 МБ до 0,9 МБ

  • Видалено 80 000 осиротілих записів postmeta

  • Оптимізовано всі основні таблиці

Результати:

  • TTFB покращено на 42%

  • Час завантаження адміністратора зменшено з від 3,8 секунди до 1,6 секунди

  • Використання процесора MySQL зменшилося на 35%

  • Редагування товарів WooCommerce стало значно швидшим

Це демонструє, як ручне налаштування MySQL може досягти покращень, яких не можуть досягти плагіни.

Оптимізація бази даних WordPress виходить далеко за рамки простого натискання кнопки «очистити базу даних». Реальне підвищення продуктивності досягається завдяки розумінню того, як MySQL зберігає дані, визначенню того, що уповільнює роботу сайту, та їх безпечному та стратегічному видаленню.

Контролюючи автоматично завантажені дані, очищуючи забуті метадані, належним чином керуючи завданнями cron та використовуючи оптимізацію на рівні SQL, ви гарантуєте, що ваша інсталяція WordPress залишається компактною, швидкою та масштабованою — навіть по мірі зростання.

Якщо ви бажаєте професійний аудит бази даних, адаптований до вашого сайту, замовте Безкоштовний аудит ефективності тут:
https://speedwppro.com/free-audit