Ускорение запросов Wordpress MySQL для больших таблиц - PullRequest
0 голосов
/ 29 ноября 2018

Я управляю сайтом WordPress, который был в сети уже много лет и имеет много пользователей и постов.Таблица usermeta теперь достигает 1 миллиона строк, 80 000 пользователей, 400 000 записей.

Кроме того, веб-сайт довольно сложный, и домашняя страница или форум использует много запросов.Я уже внедрил HTML-кеш, поэтому я загружаю блоки из кеша, и им не нужно обращаться к БД.Но определенный динамический контент должен использовать базу данных.

Веб-сайт теперь загружается очень медленно, и после нескольких дней поиска причины в коде я наконец обнаружил, что проблема была в базе данных.Я проанализировал таблицу PROCESSLIST из схемы, и там я вижу, что некоторые запросы к таблице сообщений или пользователей могут занимать до 20 секунд!каждый!(в некоторых случаях только 8-10).В большинстве случаев процессы являются «индексом сортировки».

Итак, очевидно, если страница делает 5 запросов к БД, но каждая занимает 10 секунд, это 50 секунд загрузки sql ...

Так что мне нужно выяснить, как это ускорить, вот методы, о которых я думал:

  • Использование php для определенной фильтрации, но технически sql должен быть быстрее php, так что не уверен, что это хорошая идея.Кроме того, если sql очень занят, в то время как php ничего не делает ... возможно, лучше поделиться работой.

  • Каким-то образом разбить данные таблиц на несколько таблиц.Но так как это Wordpress ... система не воспримет это хорошо.

  • Создание дубликата таблицы с последующим удалением из исходной таблицы и каким-то образом при запросе данныхпроверьте, существует ли он в дубликате, если он есть, переместите его в исходный.

Но все это всего лишь уловки, которых я предпочел бы избежать.Есть ли лучший способ ускорить работу базы данных?

...