Долгое Sending data

kosiakcrakc

Постоялец
Регистрация
25 Фев 2010
Сообщения
60
Реакции
15
Sending data MySQL выполняется 35 секунд, куда копать?
 
Sending data MySQL выполняется 35 секунд, куда копать?
а можно более подробно где такое сообщение, какой запрос исполняется и так далее?
навскидку
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся (последнее сообщение)
 
Выполните ваш mysql запрос, поставив перед ним explain
Так вы увидите, какое количество записей вы получаете этим запросом.
Обычно такое бывает, когда вы пытаетесь вытянуть запросом несколько миллионов записей, без использования LIMIT
Соответственно и копайте в сторону того, как ограничить выборку
 
проверьте есть ли индексы по искомым полям, также крайне болезненна связка order by + limit, лучше ее избегать любыми способами, в том числе и выборкой по диапазону (вместо лимита указывать диапазон идентификаторов), но это не всегда подходит
 
проверьте есть ли индексы по искомым полям, также крайне болезненна связка order by + limit, лучше ее избегать любыми способами, в том числе и выборкой по диапазону (вместо лимита указывать диапазон идентификаторов), но это не всегда подходит
да, особенно в тех случаях, когда диапазон не отфильтровывает большую часть записей (тоесть почти все идентификаторы включены в запрос), тогда IN становится просто огромным
 
Если sending data длится 35 секунд, то неплохо бы посмотреть в сторону php, потому как наиболее вероятная причина - выборка больших объемов без всяких LIMIT'ов. Не так часто, но все-таки встречается проблема с unix-сокетами, которые в некоторых ситуациях работают значительно медленнее, чем сетевые сокеты. Ну и один раз у меня была проблема со свопом: памяти на сервере критически не хватало, а выборки были довольно существенные, как итог данные выгружались из мускула напрямую в своп, и статус Sending data мог спокойно висеть секунд по 5-10.
 
Назад
Сверху