Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Тормоза между итерациями цикла  [new]
Доморацкий Вячеслав
Member

Откуда:
Сообщений: 40
В одном пакете есть цикл по курсору с вызовом другого пакета. Цикл обрабатывает до 20 000 записей.
Сама выборка выполняется практически мгновенно, проверял отдельно.
Замер времени выполнения внутри вызываемого пакета показал, что отрабатывает за тысячные доли секунды на каждой записи курсора.
Вот вызывающий пакет с замером времени:
for plp$c_obj in c_obj loop
	X := plp$c_obj.id;
	V_CUR_TIME := SYSDATE;
	ECODE := ANALYT_AT17561825353.PROC_AD(X,NULL,P_DATE);
	if ECODE <> 0 then
		ERR := ERR+1;
	end if;
	V_TIME1 := SYSDATE-V_CUR_TIME;
end loop;

Показан замер времени работы итерации цикла.
Также проверял время при фетче, между end loop и началом обработки след. записи 0 сек (тут признаю, мог придумать фигню и такой замер незаконный :))
Я когда-то на этом форуме видел обсуждение тормозов на уровне процессов в БД, но сейчас не могу найти.
Или тут потери на фетчинге, к бабке не ходи? Как тогда можно оптимизировать?
Подтолкните, пожалуйста, в каком направлении копать дальше? %/
26 мар 15, 11:05    [17433950]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза между итерациями цикла  [new]
Доморацкий Вячеслав
Member

Откуда:
Сообщений: 40
Да, стёр нечаянно фразу.
Несмотря на то, что вызываемый пакет отрабатывает каждую запись за тысячные доли секунды, если разделить общее время работы на количество записей, то получится почти 3 секунды на запись.
26 мар 15, 11:08    [17433960]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза между итерациями цикла  [new]
Elic
Member

Откуда:
Сообщений: 29979
Доморацкий Вячеслав
	V_TIME1 := SYSDATE-V_CUR_TIME;
Показан замер времени работы итерации цикла.
Также проверял время при фетче, между end loop и началом обработки след. записи 0 сек (тут признаю, мог придумать фигню и такой замер незаконный :))
Подтолкните, пожалуйста, в каком направлении копать дальше? %/
Сперва научись измерять, инженеришко. Какая точность у DATE?
RTFM timestamp, systimestamp
26 мар 15, 11:11    [17433976]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза между итерациями цикла  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7425
Доморацкий Вячеслав,

Включить трейс и посмотреть. Кроме полезной работы оракел еще делает рекурсивные вызовы.
26 мар 15, 11:13    [17433990]     Ответить | Цитировать Сообщить модератору
 Re: Тормоза между итерациями цикла  [new]
Доморацкий Вячеслав
Member

Откуда:
Сообщений: 40
>Сперва научись измерять, инженеришко. Какая точность у DATE?

Да, затупил, забыл про timestamp. Теперь стало более понятно, на что время уходит, буду смотреть соответствующие куски трейса.
Спасибо, мерзкий великий Elic.

>Включить трейс и посмотреть. Кроме полезной работы оракел еще делает рекурсивные вызовы.

Relic_Hunter, трейсы курю, но опыта не хватает видеть нужное в мегабайтном тексте.
26 мар 15, 12:08    [17434313]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить