Рейтинг:0

Как найти соединения, выполненные без индексов?

флаг jp

Я запускаю веб-сайт WordPress на Mariadb 10.6, и недавно я увидел ошибку присоединения, выполненной без индексов в Mysqltuner.

Хотя это число не очень велико, Mysqltuner рекомендует продолжать увеличивать размер Key_buffer_size.

Однако на моем VPS не так много свободной памяти, поэтому я решаю эту ошибку с помощью другой проблемы.

Поскольку у меня активны десятки плагинов, я хочу проверить, какой из них вызывает проблему.

Итак, прежде всего, я включил журнал ошибок следующим образом.

лог-запросы-не-использование-индексов = 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-дайджест /var/log/mysql/mysql-slow.log

Но я не могу понять другие проблемы.

Как среди множества запросов в журнале медленных запросов определить, какой из них пытается присоединиться к столбцу без индекса?

Я не знаю базу данных, поэтому я не могу понять это, просто взглянув на запрос.

Рейтинг:0
флаг ua

У вас есть таблицы MyISAM? Если нет (и ваши таблицы должен быть InnoDB), ниже key_buffer_size до 30М.

«Соединение без индексов» не обязательно является проблемой. Если у вас есть медленный запросы, это важнее. См. Медленный журнал. То есть работать над совершенствованием самый медленный, независимо от того, являются ли они «соединениями без индексов». Использовать pt-запрос-дайджест или же mysqldumpslow -s t

Для производительности WordPress добавьте этот плагин: Улучшения индекса WP

Рейтинг:0
флаг jp

Чтобы НАЙТИ ТОЛЬКО объединения, выполненные без индексов,

В командной строке MySQL определите текущие значения, чтобы вы могли вернуться к нормальному состоянию через 1 час записи ТОЛЬКО JPWI в журнале медленных запросов.

ВЫБЕРИТЕ @@long_query_time;
SELECT @@min_examined_row_limit;
      запишите вышеуказанные значения

SET GLOBAL long_query_time=3600; для ОДНОЙ МИНУТЫ медленного триггера журнала
SET GLOBAL min_examined_row_limit=1; если запрос читает одну строку, рассмотрите возможность регистрации
УСТАНОВИТЬ ГЛОБАЛЬНЫЙ log_queries_not_using_indexes=1; чтобы получить журнал, который вам нужен

ЧЕРЕЗ ЧАС, SET GLOBAL long_query_time=обнаруженный выше; SET GLOBAL min_examined_row_limit=обнаруженный выше; УСТАНОВИТЬ ГЛОБАЛЬНЫЙ log_queries_not_using_indexes=0; # для отключения функции

УДАЛИТЬ ЖУРНАЛЫ;

просмотрите свой последний час журнала медленных запросов на наличие запросов, связанных без индексов.

Просмотрите профиль для получения контактной информации, свяжитесь с нами, если вам нужна дополнительная консультация, пожалуйста.

Большинство людей НЕ записывают медленные запросы и запросы без индексов, чтобы избежать разделения спагетти. ПОЛУЧИТЕ ОДНО или ДРУГОЕ, только чтобы сохранить некоторую форму здравомыслия.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.