Я запускаю сайт WordPress на MariaDB 10.6 и недавно увидел ошибку «Соединения выполнены без индексов» в Mysqltuner.
Хотя это число не очень большое, Mysqltuner рекомендует вам продолжать увеличивать Key_buffer_size.
Однако на моем VPS не так много свободной памяти, поэтому я решаю эту ошибку с помощью другой проблемы.
Поскольку у меня активны около десятка плагинов, я хочу проверить, какой из них вызывает проблему.
Итак, прежде всего я включил журнал ошибок следующим образом.
log-queries-not-using-indexes = 1
log_error = /var/log/mysql/mysql-error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 3
И через определенный промежуток времени я запустил pt-query-digest для анализа журнала ошибок.
pt-query-digest /var/log/mysql/mysql-slow.log
Но я не могу понять никаких других проблем.
Как среди множества запросов в медленном журнале определить, какой из них пытается соединиться со столбцом без индекса?
Я не знаю базу данных, поэтому не могу понять это, просто посмотрев на запрос.
решение1
Чтобы НАЙТИ ТОЛЬКО соединения, выполненные без индексов,
Из командной строки MySQL определите текущие значения, чтобы можно было вернуться к нормальному состоянию после 1 часа записи ТОЛЬКО JPWI в журнал медленных запросов.
SELECT @@long_query_time;
SELECT @@min_examined_row_limit;
write down the above values
SET GLOBAL long_query_time=3600; for a ONE MINUTE slow log trigger
SET GLOBAL min_examined_row_limit=1; if the query reads one row, consider logging
SET GLOBAL log_queries_not_using_indexes=1; to get the log you are needing
ЧЕРЕЗ ЧАС,
SET GLOBAL long_query_time=discovered above;
SET GLOBAL min_examined_row_limit=discovered above;
SET GLOBAL log_queries_not_using_indexes=0; # to turn OFF feature
FLUSH LOGS;
просмотрите журнал медленных запросов за последний час на предмет запросов, связанных с отсутствием индексов.
Контактную информацию можно посмотреть в профиле. Если вам понадобится дополнительная консультация, свяжитесь со мной.
Большинство людей НЕ записывают медленные запросы и запросы без индексов, чтобы избежать разделения спагетти. ПОЛУЧИТЕ ОДНО или ДРУГОЕ, только чтобы сохранить хоть какую-то форму здравомыслия.
(исправленное форматирование, для редактирования требуется 6 символов)
решение2
У вас есть таблицы MyISAM? Если нет (и ваши таблицыдолженбыть InnoDB),ниже key_buffer_size
до 30М.
"Объединения без индексов" не обязательно являются проблемой. Если у вас естьмедленныйзапросы, это важнее. СмотритеМедленныйЛог. То есть работа по улучшениюсамый медленный, независимо от того, являются ли они «объединениями без индексов». Используйте pt-query-digest
илиmysqldumpslow -s t
Для повышения производительности WordPress добавьте этот плагин: Улучшения индекса WP