|
|
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
Добрый день! Как известно драйвер Oracle кеширует результаты запроса на стороне клиента то есть при перемещению по результсету все считаные записи локально кешируются. Поэтому при очень больших размерах результсета выпадает OutOfMemory. Если для Statementа ограничить количество хранимых в результсете записей с помощью setMaxRows то тогда невозможно вернуться назад на числь записей большее чем установлено в setMaxRows - вываливается исключение "данные исчерпаны". Желаемым поведением было бы в этом случае чтоб драйвер не выкидывал это исключение а перечитывал еще раз недостающие записи. Похоже придется вручную эмулировать скролируемость сортируемым чтением по ключу и ограничением количества записей через rownum. Кто может какое то другое решение посоветовать? Спасибо за ответы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2006, 19:20:52 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
Как известно драйвер Oracle кеширует результаты запроса на стороне клиентаКак известно, его можно использовать таким образом, чтобы он это не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2006, 19:26:05 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
stdio Как известно драйвер Oracle кеширует результаты запроса на стороне клиентаКак известно, его можно использовать таким образом, чтобы он это не делал. и как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2006, 19:40:51 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 14:40:19 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
Да, кстати, если ты хочешь возвращаться назад по выборке, то это реализуется _только_ средствами эмуляции клиента - на стороне сервера возможности прокручивать курсор "назад" просто нет в силу кучи причин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 14:44:08 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
С. В. Как известно драйвер Oracle кеширует результаты запроса на стороне клиента то есть при перемещению по результсету все считаные записи локально кешируются. По моему, его надо специально заставить кешировать записи, если нужна возможность возвращаться к ним в дальнейшем. Я имею в виду выполнение Statement'а с опцией ResultSet.TYPE_SCROLL_SENSITIVE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 15:40:38 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
Есть еще один вариант - пересмотреть необходимость вывода такой большой выборки и ограничиться малой выборкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 16:58:49 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
stdioДа, кстати, если ты хочешь возвращаться назад по выборке, то это реализуется _только_ средствами эмуляции клиента - на стороне сервера возможности прокручивать курсор "назад" просто нет в силу кучи причин. да именно этого и хотелось бы... это было б еще пол беды если б при возврате назад до записи которой в кеше больше нет драйвер обращался бы к БД и считывал нехватающую запись а не вываливал Эксепшн ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 17:01:14 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
он жеЕсть еще один вариант - пересмотреть необходимость вывода такой большой выборки и ограничиться малой выборкой. речь идет о выводе лог-ов протокола определенного события. Количество записей к одному событию теоретически может составлять много тысяч. Вывожу результаты в таблицу с кнопками "вперед"-"назад". и если особо любопытный пользователь решит все таки пролистать полностью самый длинный протокол тогда и могут возникнуть упомянутые проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 17:07:54 |
|
||
|
вопрос по Oracle JDBC и скроллируемых курсорам
|
|||
|---|---|---|---|
|
#18+
С. В. речь идет о выводе лог-ов протокола определенного события. Количество записей к одному событию теоретически может составлять много тысяч. Вывожу результаты в таблицу с кнопками "вперед"-"назад". и если особо любопытный пользователь решит все таки пролистать полностью самый длинный протокол тогда и могут возникнуть упомянутые проблемы Если вперед-назад перелистывают страницу целиком, то что мешает делать запрос к базе в разрезе одной страницы (каждый раз при нажатии на "вперед" или "назад")? Т.е. с PK такого-то - N-ое количество строк. А для того, чтобы любопытный мог видеть сразу в одном списке много-много тысяч записей - нужно их выгружать в Excel или просто в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 17:14:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33992050&tid=2148108]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
223ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 563ms |

| 0 / 0 |
