Очистка сеансов (сессий)

Другая распространенная проблема, с которой мы сталкиваемся, заключается в том, что иногда задания cron рассинхронизируются или не срабатывают должным образом, и поэтому сессии не очищаются. В результате вы можете получить тонны строк _wp_session_ в вашей базе данных. В приведенном ниже примере сайт, о котором идет речь, имел более 3 миллионов строк в таблице wp_options. Размер таблицы превышал 600 МБ.

Очистка сеансов (сессий)

Вы можете использовать запрос, подобный приведенному ниже, чтобы проверить, сталкиваетесь ли вы с этой проблемой:

SELECT * 
FROM `wp_options` 
WHERE `option_name` LIKE '_wp_session_%'

Результат запроса:

Очистка сеансов (сессий)
Строки _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 (C) Картинка 10up

Мы коснулись основных моментов по оптимизации wp_options и Базы Данных WordPress. В следующих статьях будет больше всего интересного по этой теме.

Была ли эта страница полезной?