Oracle: найдите общее время выполнения запроса для нескольких запросов - PullRequest
0 голосов
/ 22 декабря 2018

Я хочу узнать общее время, затраченное на выполнение запроса (время выполнения + время выборки).Я использую запрос ниже.Это правильный путь?

Используемый мной sql_text занимает несколько миллисекунд для возврата результатов.Я запускаю sql_text несколько раз.V $ SQL предоставляет мне один запрос, количество выполнений и время первой загрузки.Как узнать общее время, затрачиваемое каждый раз при выполнении запроса?

select ELAPSED_TIME from V$SQL where sql_text = ""

Edit1 : мои запросы меняются очень незначительно, например, я вставляю разные целые числа.От V $ SQL эти запросы имеют разные SQL_ID, но я не могу найти их в AWR.Кроме того, является ли ELAPSED_TIME суммой всех выполненных запросов или среднего или прошедшего времени последнего выполненного запроса?

1 Ответ

0 голосов
/ 22 декабря 2018

Столбец ELAPSED_TIME как задокументировано здесь содержит:

Истекшее время (в микросекундах), используемое этим курсором для синтаксического анализа, выполнения и выборки.Если курсор использует параллельное выполнение, то ELAPSED_TIME - совокупное время для координатора запросов плюс все параллельные процессы подчиненного запроса.

Важно то, что статистика связана с курсор .

Так что, если курсор сбрасывается и перезагружается, всего значение сбрасывается и начинается с нуля.

Чтобы получить более полную картину, вы можете использовать AWR , который в основном берет периодические снимки статистики и сохраняет их для отчетов.

Последнее замечание - типичный подход для ссылки на оператор SQL - использовать SQL_ID (а не полный текст - SQL_ID - это, по сути, хеш-код, если текст).Вы также найдете SQL_ID в V$SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...