Другая распространенная проблема, с которой мы сталкиваемся, заключается в том, что иногда задания cron рассинхронизируются или не срабатывают должным образом, и поэтому сессии не очищаются. В результате вы можете получить тонны строк _wp_session_
в вашей базе данных. В приведенном ниже примере сайт, о котором идет речь, имел более 3 миллионов строк в таблице wp_options
. Размер таблицы превышал 600 МБ.
Вы можете использовать запрос, подобный приведенному ниже, чтобы проверить, сталкиваетесь ли вы с этой проблемой:
SELECT *
FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
Результат запроса:
В большинстве случаев их можно безопасно удалить (как и должно быть в задании cron) с помощью следующей команды:
DELETE FROM `wp_options`
WHERE `option_name` LIKE '_wp_session_%'
После очистки всех оставшихся строк _wp_session_
таблица содержала менее 1 000 строк и была уменьшена до 11 МБ.
Он также исправил пики нагрузки, которые сайт получал в MySQL.
Добавление индекса в автозагрузку
А если очистки таблицы wp_options
недостаточно, можно попробовать добавить "индекс" (Index) к полю автозагрузки. Это, по сути, может помочь более эффективному поиску.
Замечательная команда из 10up провела несколько тестовых сценариев на таблице wp_options
с типичным количеством записей в автозагрузке, чтобы показать, как добавление индекса автозагрузки к запросам wp_options
может повысить производительность.
Мы коснулись основных моментов по оптимизации wp_options
и Базы Данных WordPress. В следующих статьях будет больше всего интересного по этой теме.