MySQL продолжительность и время выборки

87

Я использую рабочую среду MySQL. В чем разница между продолжительностью и временем выборки при выполнении запроса?

Также есть способ включить опцию микросекунды в MySQL?

user1189851
источник
Странная награда. Все ответы верны, но вы им просто не верите? Вот и вот те же самые ответы Майка Лишке, который работает в Oracle, на форуме mysql. Достаточно достоверны?
Хьюго Дельсинг

Ответы:

162

Время получения - измеряет, сколько времени занимает передача полученных результатов, что не имеет ничего общего с выполнением запроса. Я бы не стал рассматривать это как вариант отладки / оптимизации sql-запросов, поскольку время выборки зависит от сетевого подключения, которое само по себе не имеет ничего общего с оптимизацией запросов. Если время выборки является узким местом, то, скорее всего, возникла проблема с сетью.

Примечание: время выборки может варьироваться при выполнении каждого запроса.

Продолжительность - время, в течение которого запрос должен быть выполнен. Вы должны попытаться минимизировать его при оптимизации производительности sql-запроса.

Справка

Лери
источник
5
Для целей оптимизации помните, что опция query_cache_typeдолжна быть OFF, чтобы кеш не влиял на результат. См stackoverflow.com/questions/181894/...
dellasavia
6
Хотя я согласен с тем, что продолжительность - это значение, которое вы обычно хотите оптимизировать, поскольку оно напрямую связано с эффективностью вашего запроса, необычно большое время выборки также может указывать на важные логические ошибки и / или неэффективность. Например, вы можете передавать большие объемы текста с каждым запросом, который клиент должен кэшировать. Или вы можете вернуть 100 тысяч строк, когда ожидали только 10.
GrandOpener
1
хороший момент @GrandOpener - или вы могли бы сделать select (*), когда все, что вам действительно нужно, это идентификатор строки.
Эндрю Лориен
Я включил профилировщик в MySQL и запустил запрос. Затем я изучил выходные данные Workbench и профилировщика. Workbench сообщает о длительности, равной 0,373, в то время как общая длительность из профилировщика едва достигает 0,01. Означает ли это, что вывод Duration в Workbench НЕ является общим временем, затраченным MySQL на выполнение запроса?
Meglio
Это не кажется правильным. У меня есть два запроса, которые возвращают одинаковые строки (15300), но их статистика всегда разная. один занимает 14 443 секунды Duration / 1111 810 секунд Fetch, а другой 443 986 секунд Duration / 0,0089 секунд Fetch каждый раз. это почему?
Шахид
16

Длительность показывает время, необходимое для выполнения запроса, а выборка - время, необходимое для чтения набора результатов (извлечения данных).

Я не уверен насчет микросекундного варианта. Если это касается оптимизации, помните: «преждевременная оптимизация - корень всех зол»

Курт
источник
1

Что касается микросекунды, попробуйте включить ее в меню настроек, и у меня также был вопрос о продолжительности и времени выборки раньше, теперь я, кажется, получил ответ, что длительность - это время выполнения запроса, а выборка извлекает результат и отправьте их куда хотите. Например, я получаю запрос, продолжительность которого составляет 0,078, но для отправки данных на мой веб-сайт потребуется 60 секунд.

Искра8006
источник
1

Время выполнения - это время, затраченное на подготовку запроса и выполнение запроса И время выборки - это время, затраченное на извлечение результатов строки

Сатьям
источник