На конкретном примере из своей практики расскажу про полезную фичу SHOW PROCESSLIST
Команда (sql-запрос) SHOW PROCESSLIST показывает над чем в данный момент трудится MySQL. Проще говоря, показывает медленные запросы в текущий момент. Позволяет БЫСТРО оценить что не в порядке с базой (не нужно устанавливать дополнительный софт, профайлеры).
На первом скриншоте как раз изображен тяжелый случай. Время отображается в секундах. Если в вашем приложении есть SQL-запрос, выполняющийся более 1 секунды, то у вас что-то не так с архитектурой, железом.
Сайт по функционалу типа Хабра (блоги, посты, комментарии). Только масштаб в разы меньше: 2000 человек в сутки, 10000 постов, 20000 комментариев. Для MySQL это чепуха, тем более, что сайт работает на мощном выделенном серваке. Затык возникает из-за архитекутры приложения. Функционал включает историю просмотров постов, т.е. в отдельную таблицу пишется все пользователи, просмотревшие какой-то пост. За 3 года таблица выросла до 8 млн. записей.
При выводе списка постов конкретного блога (выводится стандартно по 10 записей на страницу), из таблицы просмотров вытягивается кол-во просмотров для каждого поста.
SELECT COUNT(id) AS count, objectid FROM views WHERE objectid IN (…список id постов…) AND object_type = 1 GROUP BY objected
Так как таблица 8 млн строк + идет группировка, то база жутко тормозит.
Короче, от этого запроса я избавился просто записывая кол-во просмотров в таблицу постов. Таким образом, как и раньше остался INSERT в таблицу просмотров (для истории) и добавился UPDATE в таблицу постов, который увеличивает на 1 кол-во просмотров.
UPDATE post SET views = views+1 WHERE postid=23
В итоге, при выводе списка постов блога, идет 1 запрос к небольшой таблице постов, из которой я получаю все данные, в том числе кол-во просмотров. Страница теперь формируется за 0.1-0.5 секунды, а раньше эти страницы часто падали с ошибкой 502.
UPD. Забыл добавить, что поисковики учитывают скорость загрузки сайта при ранжировании. Если страницы тормозят или вообще не открываются, то поисковики понижают позиции сайта в выдаче или вовсе выкидывают страницы из индекса. В Яндекс.Метрике есть мониторинг работы сайта. Вот уже неделю сайт не падает, а раньше такое было чуть ли не каждый день.
В phpMyAdmin команда SHOW PROCESSLIST находится во вкладке «Процессы».
Полезные MySQL запросы http://plutov.by/post/mysql_useful_queries
спасибо за хорошую статья, вот еще немного про интересные запросы в mysql: http://plutov.by/post/mysql_useful_queries