Comments 33
Сразу хочу уточнить: это перевод статьи. Я не знаю, почему автор выбрал именно такое название...
Перевод хороший, статья не о чем. Про explain и так понятно, что средство мощное, вот если бы примеры позаковырестее, не такие явные, было бы и интересно и полезно.
Примерно такое же описание можно найти в русской версии учебника.
Статья не интересная, тема не раскрыта.
Статья не интересная, тема не раскрыта.
Было бы интересно узнать, как определить в проекте узкие места при работе не с чистым SQL, а со всякими SQL toolkit-ами и Object Relational Mapper-ами
Огромное спасибо! =)
Очень вовремя! Спасибо.
Не согласен с тем что с помощью EXPLAIN можно эфективно обнаруживать медленные запросы, потому что на детальный анализ большого числа различных возможных запросов (на CMS около 100) с помощью которых работает сложное веб-приложение будет потрачено слишком много времени.
Для обнаружения медленных запросов можно использовать журнал медленных запросов, а после того как такие запросы будут выявлены провести их анализ с помощью EXPLAIN
Для обнаружения медленных запросов можно использовать журнал медленных запросов, а после того как такие запросы будут выявлены провести их анализ с помощью EXPLAIN
Большинство запросов можно и на глаз анализировать, и увидеть есть в них проблемы или нет.
И уже потом если что-то вызывает подозрение можно EXPLAIN-ить их.
Также нужно учитывать какие запросы с какой переодичностью выполняются, если это например ежечасовый подсчет рейтинга по крону то 5-10 сек. можно ему и дать на обработку.
Если же запрос выполняется очень часто, то и 1 (а то и меньше) сек. может стать раковой...
Кстати в MySQL 5.1 есть возможность писать slow query log в таблицу, детальнее тут:
http://www.mysqlperformanceblog.com/2007…
Анализ запросов становиться еще более удобным, и можно даже автоматизировать процесс.
И уже потом если что-то вызывает подозрение можно EXPLAIN-ить их.
Также нужно учитывать какие запросы с какой переодичностью выполняются, если это например ежечасовый подсчет рейтинга по крону то 5-10 сек. можно ему и дать на обработку.
Если же запрос выполняется очень часто, то и 1 (а то и меньше) сек. может стать раковой...
Кстати в MySQL 5.1 есть возможность писать slow query log в таблицу, детальнее тут:
http://www.mysqlperformanceblog.com/2007…
Анализ запросов становиться еще более удобным, и можно даже автоматизировать процесс.
Не обязательно запросы могут быть "медленные". Вы можете написать запрос который будет выполнятся быстро, но сильно нагружать сревер, при частом выполнении будет жрать стлько ресурсов, сколько все "медленные" вместе взятые, которые выполняются изредко.
дайте пример, пожалуйста
Например запросы "SELECT field FROM table WHERE id=21", вызывающиеся 100 раз с разными id, вместо того чтобы выбрать их все одним запросом.
желательно при этом еще соединение с базой каждый раз устанавливать. для полного счастья т.с. ;)
совершенно некорректный пример
читай внимательнее: "Вы можете написать запрос который будет выполнятся быстро, но сильно нагружать сревер, при частом выполнении будет жрать стлько ресурсов, сколько все "медленные" вместе взятые, которые выполняются изредко."
перевожу: _1_ _быстрый_ _запрос_ который будет выполняться долго
1 запрос с WHERE `id` = 666, с выставленным индексом по `id` будет выполняться быстрее любого запроса по неиндексированной таблице
читай внимательнее: "Вы можете написать запрос который будет выполнятся быстро, но сильно нагружать сревер, при частом выполнении будет жрать стлько ресурсов, сколько все "медленные" вместе взятые, которые выполняются изредко."
перевожу: _1_ _быстрый_ _запрос_ который будет выполняться долго
1 запрос с WHERE `id` = 666, с выставленным индексом по `id` будет выполняться быстрее любого запроса по неиндексированной таблице
Ага, видимо я понял про другую неоптимизированность (которую как раз ловят журналированием запросов). Тогда с тебя пример "быстрого запроса, выполняющегося долго".
ты высказал эту чудную идею - что "быстрый запрос" может выполняться медленно
почему это я тогда должен приводить пример для твоего же утверждения? ;)
почему это я тогда должен приводить пример для твоего же утверждения? ;)
Ты потерял ключевой фрагмент - "при частом выполнении". То есть когда прсотенький с виду запрос выполняется так часто, что забивает сервер.
ты можешь представить цифры, когда такой простой запрос будет выполняться медленнее?
ну и желательно - описать примерную ситуацию, когда на N лёгких запросов будет выполняться 1 тяжёлый
при этом N лёгких будут перевешивать сложный
ну и желательно - описать примерную ситуацию, когда на N лёгких запросов будет выполняться 1 тяжёлый
при этом N лёгких будут перевешивать сложный
упс, вернее не совсем ты - DEL
собственно у него и интересуйся....
я придумать такого не могу
собственно у него и интересуйся....
я придумать такого не могу
«Быстрые запросы», которые жрут много ресурсов xD
Я представляю такое только с фулсканом индексов (не таблиц). Проблемы с этим возникают только в HA на OLTP в многопроцессорных системах (из опыта). Синхронизация кешей процессоров. Но в этот момент запросы перестанут быть быстрыми.
Я представляю такое только с фулсканом индексов (не таблиц). Проблемы с этим возникают только в HA на OLTP в многопроцессорных системах (из опыта). Синхронизация кешей процессоров. Но в этот момент запросы перестанут быть быстрыми.
Жалкое подобие execution plan в mssql. Долго я мучался с mysql, пока не перешел на mssql express, и стал счастливым человеком :)
А есть ли вообще планировщик и оптимизатор запросов в mysql?
картинке потерялись
Sign up to leave a comment.
EXPLAIN — Самая мощная команда MySQL