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

Откуда: Львов, Украина
Сообщений: 30
PL_SQL пакет, функция которая используеться для выборки данных для веба.
Возвращает много (200-300кб) данных за один вызов. Вызываеться часто (200-300 раз/сек)
Два варианта возврата даных:
1. SQL -> Bulk Collect -> Pipelined
2. SQL -> sys_refcursor
Какой вариант оптималнее?
P.S. мне почемуто кажеться что BULK COLLECT не кешируеться.
30 апр 07, 18:25    [4087422]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Collect и Pipelined или sys_refcursor  [new]
evgenyg
Member

Откуда:
Сообщений: 355
Max.Ant
PL_SQL пакет, функция которая используеться для выборки данных для веба.
Возвращает много (200-300кб) данных за один вызов. Вызываеться часто (200-300 раз/сек)
Два варианта возврата даных:
1. SQL -> Bulk Collect -> Pipelined
2. SQL -> sys_refcursor
Какой вариант оптималнее?
P.S. мне почемуто кажеться что BULK COLLECT не кешируеться.

Это вы примерно 40 мб в секунду по сетке тащите? А данные каждый раз разные? Интересно.
У меня подозрение что где-то ошибка.
На мой взгляд bulk предпочтительнее. НО конечно стоит написать все варианты и погонять с профайлером.
Удачи
30 апр 07, 20:32    [4087554]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Collect и Pipelined или sys_refcursor  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63937
Блог
Max.Ant
Какой вариант оптималнее?

А почему бы не изменить? :)

В общем случае ref cursor оптимальнее - нет переключений контекстов и лишних прокладок. Но если в pipelined будут какие-то манипуляции с данными вместо более сложных в sql, может и выиграть.

В любом случае, если предполагается ява, начать стоит с fetch size (если не изменяет память, по умолчанию в драйвере совершенно идиотское значение, чуть ли не единица, и это тормозит куда лучше любого pipelined).
30 апр 07, 20:40    [4087566]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Collect и Pipelined или sys_refcursor  [new]
Guest9
Guest
Max.Ant

1. SQL -> Bulk Collect -> Pipelined
2. SQL -> sys_refcursor

А если курсоры в пакетах попробовать?
1 май 07, 10:53    [4087965]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить