Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по Oracle JDBC и скроллируемых курсорам / 10 сообщений из 10, страница 1 из 1
16.09.2006, 19:20:52
    #33992050
С. В.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
Добрый день!

Как известно драйвер Oracle кеширует результаты запроса на стороне клиента то есть при перемещению по результсету все считаные записи локально кешируются. Поэтому при очень больших размерах результсета выпадает OutOfMemory. Если для Statementа ограничить количество хранимых в результсете записей с помощью setMaxRows то тогда невозможно вернуться назад на числь записей большее чем установлено в setMaxRows - вываливается исключение "данные исчерпаны". Желаемым поведением было бы в этом случае чтоб драйвер не выкидывал это исключение а перечитывал еще раз недостающие записи. Похоже придется вручную эмулировать скролируемость сортируемым чтением по ключу и ограничением количества записей через rownum. Кто может какое то другое решение посоветовать?
Спасибо за ответы
...
Рейтинг: 0 / 0
16.09.2006, 19:26:05
    #33992057
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
Как известно драйвер Oracle кеширует результаты запроса на стороне клиентаКак известно, его можно использовать таким образом, чтобы он это не делал.
...
Рейтинг: 0 / 0
16.09.2006, 19:40:51
    #33992063
С. В.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
stdio Как известно драйвер Oracle кеширует результаты запроса на стороне клиентаКак известно, его можно использовать таким образом, чтобы он это не делал.

и как?
...
Рейтинг: 0 / 0
17.09.2006, 14:40:19
    #33992522
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
...
Рейтинг: 0 / 0
17.09.2006, 14:44:08
    #33992531
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
Да, кстати, если ты хочешь возвращаться назад по выборке, то это реализуется _только_ средствами эмуляции клиента - на стороне сервера возможности прокручивать курсор "назад" просто нет в силу кучи причин.
...
Рейтинг: 0 / 0
17.09.2006, 15:40:38
    #33992572
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
С. В.
Как известно драйвер Oracle кеширует результаты запроса на стороне клиента то есть при перемещению по результсету все считаные записи локально кешируются.
По моему, его надо специально заставить кешировать записи, если нужна возможность возвращаться к ним в дальнейшем. Я имею в виду выполнение Statement'а с опцией ResultSet.TYPE_SCROLL_SENSITIVE.
...
Рейтинг: 0 / 0
17.09.2006, 16:58:49
    #33992626
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
Есть еще один вариант - пересмотреть необходимость вывода такой большой выборки и ограничиться малой выборкой.
...
Рейтинг: 0 / 0
17.09.2006, 17:01:14
    #33992629
С. В.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
stdioДа, кстати, если ты хочешь возвращаться назад по выборке, то это реализуется _только_ средствами эмуляции клиента - на стороне сервера возможности прокручивать курсор "назад" просто нет в силу кучи причин.

да именно этого и хотелось бы...

это было б еще пол беды если б при возврате назад до записи которой в кеше больше нет драйвер обращался бы к БД и считывал нехватающую запись а не вываливал Эксепшн
...
Рейтинг: 0 / 0
17.09.2006, 17:07:54
    #33992633
С. В.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
он жеЕсть еще один вариант - пересмотреть необходимость вывода такой большой выборки и ограничиться малой выборкой.

речь идет о выводе лог-ов протокола определенного события. Количество записей к одному событию теоретически может составлять много тысяч. Вывожу результаты в таблицу с кнопками "вперед"-"назад". и если особо любопытный пользователь решит все таки пролистать полностью самый длинный протокол тогда и могут возникнуть упомянутые проблемы
...
Рейтинг: 0 / 0
17.09.2006, 17:14:25
    #33992640
он же
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по Oracle JDBC и скроллируемых курсорам
С. В.
речь идет о выводе лог-ов протокола определенного события. Количество записей к одному событию теоретически может составлять много тысяч. Вывожу результаты в таблицу с кнопками "вперед"-"назад". и если особо любопытный пользователь решит все таки пролистать полностью самый длинный протокол тогда и могут возникнуть упомянутые проблемы

Если вперед-назад перелистывают страницу целиком, то что мешает делать запрос к базе в разрезе одной страницы (каждый раз при нажатии на "вперед" или "назад")?
Т.е. с PK такого-то - N-ое количество строк.

А для того, чтобы любопытный мог видеть сразу в одном списке много-много тысяч записей - нужно их выгружать в Excel или просто в файл.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по Oracle JDBC и скроллируемых курсорам / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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