Время выполнения запроса Oracle

Я хотел бы получить время выполнения запроса в Oracle. Я не хочу, чтобы Oracle печатал результаты, а только время выполнения.

В MySQL легко получить время выполнения из оболочки.

Как это сделать в SQL * Плюс ?

29
задан Beryllium 1 October 2013 в 14:09
поделиться

3 ответа

Используйте:

set serveroutput on
variable n number
exec :n := dbms_utility.get_time;
select ......
exec dbms_output.put_line( (dbms_utility.get_time-:n)/100) || ' seconds....' );

Или, возможно:

SET TIMING ON;

-- do stuff

SET TIMING OFF;

... чтобы узнать прошедшие сотые секунды.

В любом случае на прошедшее время может повлиять нагрузка на сервер и т. Д.

Ссылка:

19
ответ дан 28 November 2019 в 01:30
поделиться

Можно ввести команду SQL * Plus SET TIMING ON , чтобы получить время настенных часов, но нельзя, например, тривиально извлечь время из этого .

Параметр AUTOTRACE при использовании в качестве SET AUTOTRACE TRACEONLY подавляет вывод, но по-прежнему выполняет всю работу по удовлетворению запроса и отправляет результаты обратно в SQL * Plus, который подавляет его.

Наконец, можно отследить сеанс SQL * Plus и вручную рассчитать время, потраченное на ожидание событий, которые являются ожиданиями клиента, таких как «сообщение SQL * Net клиенту», «сообщение SQL * Net от клиента».

25
ответ дан 28 November 2019 в 01:30
поделиться

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

Но если вы ДЕЙСТВИТЕЛЬНО хотите время выполнения SQL, представление V $ SQL имеет как CPU_TIME, так и ELAPSED_TIME.

3
ответ дан 28 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: