2015-07-15 1 views
1

Есть ли способ просмотреть ход запроса? Например, SELECT-запросы, которые должны извлекать большой объем данных. Если таблица содержит 100 строк, может ли SQL сообщить, какая строка обрабатывается на данный момент? Это будет от 1 до 100 человек.SQL просмотреть ход запроса

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

+0

Какая СУБД вы используете? Postgres? Oracle? –

+0

@a_horse_with_no_name Это был общий вопрос СУБД, но, будучи более точным, MySQL. – ProtectedVoid

+0

Я бы предположил, из-за того, как СУБД загружает свои данные (планы выполнения и т. П.), Очень сложно определить, где вы находитесь, особенно если вы не уверены, сколько строк вы возвращаете в первую очередь. Добавьте к этому сложность плана выполнения, а также параллелизм по нескольким потокам, и у вас есть «палец в воздухе». В большинстве случаев, если запрос занимает достаточно много времени, чтобы гарантировать индикатор выполнения, он, вероятно, не так хорошо написан (хотя это зависит от того, что он должен делать!) – Charleh

ответ

2

Вы можете попробовать show processlist; в MySQL, это даст вам время запрос приняты, а также текущий шаг запрос в подобной выборке, отправка и т.п.

0

Насколько я знаю, SQL запросы не работа так. Вы можете просмотреть значительный период или время выполнения/даты, а затем оценить различия между началом и завершением или, возможно, разделить запрос и посмотреть, как он влияет на общее время.

Я просто не думаю, что SQL-сообщения возвращаются таким образом, и поэтому идея «загрузки» немного завышена. Хотя я использовал только несколько технологий SQL ...

+0

Ну, Oracle _can_ покажет ход выполнения, даже каждый шаг плана выполнения в процентах. –

+0

Данг, один из тех, с которыми мне еще не доставляло удовольствие. :( – insidesin

0

Лучшее, что вы можете сделать, это проанализироватьперед выполнением запроса.