Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / примерное время когда SQL выполниться (Прогресс бар) / 9 сообщений из 9, страница 1 из 1
15.12.2021, 12:51
    #40120202
примерное время когда SQL выполниться (Прогресс бар)
Ребят есть вопрос как мне подсчитать примерное время окончания работы SQL запроса основываясь на системных таблицах? Мне нужно отображать в интерфейсе бар прогресса в процентах и я так понимаю для просчета мне нужно два разреза времени:
1) Текущее время выполнения скрипта (это я возьму с execution Time)
2) Примерное время когда запрос выполниться (я могу конечно выполнить его и просто записать время его работы в таблицу и брать это значение как максимальное время для следующих запусков но я думаю это не лучший подход так как время выполнения может быть разным).
...
Рейтинг: 0 / 0
15.12.2021, 13:17
    #40120207
Агрох
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
Если разовое выполнение то зачем прогресс?
Если нужно частое выполнение то лучше всего не писать такие запросы, для которых нужен прогресс-бар.

Если запрос выполняется менее минуты, то хватит какой-нибудь крутилки, чтобы показать что идёт некий процесс.
Если дольше - вплоть до десятков минут и даже часов, то лучше разбить на серию последовательных запросов с сохранением промежуточных вариантов во временные таблицы и прогресс - количество выполненных шагов из их общего количества.

Когда то обсуждалась схожая задача и пришли к варианту: после каждого выполнения запроса сохранять время выполнения последних пяти вызовов. В качестве ожидаемого времени очередного выполнения использовать среднее арифметическое от времени выполнения этих самых последних пяти вызовов.
...
Рейтинг: 0 / 0
15.12.2021, 13:30
    #40120211
Asmodeus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
...
Рейтинг: 0 / 0
15.12.2021, 13:41
    #40120212
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
Евгения Зайцева
Ребят есть вопрос как мне подсчитать примерное время окончания работы SQL запроса основываясь на системных таблицах?

это нетривиальная задача.

в общем случае есть v$sql_plan.time - предположение оракл о том, сколько этот запрос (шаг запроса, нужно будет взять корневой) будет работать. оценка нередко сильно расходится с реальностью, но реалистично вы вряд ли напишете что-то лучшее.

ну либо делать какую-то эвристику с учетом специфики ваших запросов.

V$SESSION_LONGOPS ничем не поможет, он показывается динамику выполнения отдельных шагов запроса (допустим, когда закончится текущий full table scan, а их может быть десять).
...
Рейтинг: 0 / 0
15.12.2021, 13:49
    #40120215
кит северных морей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
Агрох
Когда то обсуждалась схожая задача и пришли к варианту: после каждого выполнения запроса сохранять время выполнения последних пяти вызовов. В качестве ожидаемого времени очередного выполнения использовать среднее арифметическое от времени выполнения этих самых последних пяти вызовов.

когда-нибудь, в следующей жизни, у меня дойдут руки, и я напишу простенькую ML-модельку, которая будет предсказывать таймауты наших запрсов, которые очень хорошо инструментированы...
...
Рейтинг: 0 / 0
15.12.2021, 14:22
    #40120230
примерное время когда SQL выполниться (Прогресс бар)
Агрох
Если разовое выполнение то зачем прогресс?
Если нужно частое выполнение то лучше всего не писать такие запросы, для которых нужен прогресс-бар.

Если запрос выполняется менее минуты, то хватит какой-нибудь крутилки, чтобы показать что идёт некий процесс.
Если дольше - вплоть до десятков минут и даже часов, то лучше разбить на серию последовательных запросов с сохранением промежуточных вариантов во временные таблицы и прогресс - количество выполненных шагов из их общего количества.

Когда то обсуждалась схожая задача и пришли к варианту: после каждого выполнения запроса сохранять время выполнения последних пяти вызовов. В качестве ожидаемого времени очередного выполнения использовать среднее арифметическое от времени выполнения этих самых последних пяти вызовов.


Спасибо большое! я думаю всегда брать 5 последних запусков и вычислять среднее значение нормальный вариант для лоадера на данном этапе . Есть проблема с разибитием запросов в том что у меня нету доступа к sql скриптам и я не могу их менять =) Так что в моем случае остаеться только время или системные таблицы =)
...
Рейтинг: 0 / 0
15.12.2021, 15:31
    #40120266
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
Евгения Зайцева

я думаю всегда брать 5 последних запусков и вычислять среднее значение нормальный вариант для лоадера на данном этапе .


Часто бывает, достаточно показывать время которое прошло со старта

Пользователи (кроме новичков) и так знают среднее ,
+ ети 5значений где-то ж надо хранить

ps
мож есть система логирования, и данные брать оттуда
.....
stax
...
Рейтинг: 0 / 0
15.12.2021, 15:53
    #40120282
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
Stax
Евгения Зайцева

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

Это тоже не гарантирует правильной оценки.
Время выполнения может очень сильно отличаться.
...
Рейтинг: 0 / 0
15.12.2021, 16:14
    #40120295
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
примерное время когда SQL выполниться (Прогресс бар)
SQL*Plus

Это тоже не гарантирует правильной оценки.
Время выполнения может очень сильно отличаться.


понятно что не может
как гарантировать в многопользовательской системе точное время при разных нагрузках

я немножко о другом
программист старается, мучается, изобретает систему и ее поддерживает (напр для Прогресс бар), а конечному пользователю она и не очень то нужна, не помешает, но стоит ли она затрат, хз

.....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / примерное время когда SQL выполниться (Прогресс бар) / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]