powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / вопрос по Oracle JDBC и скроллируемых курсорам
10 сообщений из 10, страница 1 из 1
вопрос по Oracle JDBC и скроллируемых курсорам
    #33992050
С. В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

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

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

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

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

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

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

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


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