Этот SQL-запрос вызывает нагрузку на мой сервер: SELECT meta_value FROM wp_sitemeta WHERE meta_key = ‘wp_installer_network’ AND site_id = 1

Вопрос или проблема

У меня есть этот SQL-запрос, который выполняется каждый раз на моем сайте и занимает от 1 до 2 секунд на выполнение, из-за чего мой сервер зависает. Что это и как это удалить?

SELECT meta_value FROM wp_sitemeta WHERE meta_key = 'wp_installer_network' AND site_id = 1

Мой сайт является многосайтовым и многоязычным. Спасибо

Что это?

Это, скорее всего, часть WPML. Это основано на быстром копировании и вставке wp_installer_network в поисковую строку github.

Также есть небольшая вероятность, что это плагин Types, но вы упомянули, что у вас установлен многоязычный плагин.

Ссылок на wp_installer_network в самом WordPress не найдено.

И как это удалить?

Вам нужно будет спросить об этом в сообществе WPML, но самый простой способ — деактивировать WPML. Если вы хотите сохранить WPML, но все же решить проблему, вам нужно будет спросить об этом в сообществе WPML, так как вопросы о сторонних плагинах здесь не в теме.

Старый вопрос, но это может быть полезно для кого-то.

У меня были похожие проблемы с этим запросом, который был действительно медленным. Для меня это было связано с тем, что WPML заполнил wp_sitemeta 650k строками одного и того же значения.

Проблема для меня была связана с тем, что WPML пытался проверить мой ключ сайта, что не удалось, потому что год назад я сменил субдомен для моего сайта. Каждый раз, когда он пытался проверить, он добавлял значения в таблицу sitemeta.

Пример для пояснения:

До смены домена

  • Оригинальное имя сайта subdomain1.example.com
  • В панели управления WPML я добавил этот домен и получил ключ сайта.
  • Я добавил ключ на свой сайт.
  • Подтверждение прошло успешно

После смены домена

  • Я обновил домен моего сайта на subdomain2.example.com, но не обновил домен в панели управления WPML.
  • Теперь я использую “неправильный” ключ. subdomain2 использует ключ, выданный WPML для subdomain1.
  • Подтверждение не удалось

Как решить

  1. Удалите старый домен в WPML и добавьте новый домен.
  2. Используйте новый ключ для активации WPML.
  3. Удалите все дублирующиеся значения, созданные WPML в таблице sitemeta.

Ответ или решение

Проблема с SQL-запросом в WordPress и способы ее решения

Ваша проблема заключается в медленном выполнении SQL-запроса на выборку данных из таблицы wp_sitemeta, который, с точки зрения производительности, негативно сказывается на вашем сервере и, как следствие, на работе вашего сайта. Рассмотрим подробнее причины медленной работы данного запроса и возможные способы решения.

Причина проблемы

Запрос:

SELECT meta_value FROM wp_sitemeta WHERE meta_key = 'wp_installer_network' AND site_id = 1;

Этот запрос может выполняться долго по нескольким причинам:

  1. Большое количество записей в таблице: Как было указано в одном из комментариев, у вас может накапливаться большое количество дубликатов записей в таблице wp_sitemeta. Если в вашем случае их количество превышает несколько сотен тысяч — это может существенно замедлить выполнение запросов.

  2. Повторяющиеся значения: Плагины, такие как WPML (мультиязычное решение для WordPress), могут добавлять записи в wp_sitemeta при каждой ошибке верификации. Это может происходить, если вы изменили домен вашего сайта и старая версия ключа больше не работает.

  3. Отсутствие индексов: Если поле meta_key не индексировано, скорость выполнения запроса может значительно замедлиться, особенно с увеличением объема данных.

Решение проблемы

Есть несколько подходов к решению этой проблемы:

  1. Оптимизация БД:

    • Проверьте таблицу wp_sitemeta на наличие дубликатов. Вы можете использовать запрос для поиска повторяющихся значений:
      SELECT meta_key, COUNT(*) FROM wp_sitemeta GROUP BY meta_key HAVING COUNT(*) > 1;
    • После этого можно удалить дубликаты с помощью соответствующих SQL-запросов или инструментов для управления базами данных.
  2. Обновление настроек WPML:

    • Если вы недавно изменили домен, убедитесь, что вы обновили настройки в WPML. Перейдите в панель управления WPML и удалите старое доменное значение, добавив новое. Это может помочь останавить создание новых записей, связанных со старыми ключами.
  3. Добавление индексов:

    • Проверьте, индексировано ли поле meta_key. Если нет, добавление индекса может значительно ускорить выполнение запросов.
      ALTER TABLE wp_sitemeta ADD INDEX (meta_key);
  4. Отключение WPML:

    • Если проблема не решается, вы можете рассмотреть временное отключение WPML, чтобы понять, влияет ли данный плагин на производительность сайта. Однако имейте в виду, что это может отразиться на мультиязычных функциях вашего сайта.
  5. Кэширование результатов:

    • Используйте кэширование на уровне базы данных или приложения, чтобы избежать повторных вызовов одного и того же SQL-запроса. Это существенно снизит нагрузку на сервер.
  6. Перенос на более мощный хостинг:

    • Если ваши ресурсы исчерпаны, возможно, стоит рассмотреть возможность перехода на более производительное хостинг-решение.

Заключение

Чтобы решить проблему с медленным SQL-запросом в WordPress, важно выявить основную причину и применить соответствующие меры. Убедитесь, что у вас есть резервные копии данных перед внесением изменений в базу данных, и если вы не уверены в своих действиях, не стесняйтесь обратиться к специалисту. Настоянные оптимизации не только улучшат производительность вашего сайта, но и повысят удовлетворенность пользователей.

Оцените материал
Добавить комментарий

Капча загружается...