powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc statement fetchsize и getBinaryStream
10 сообщений из 10, страница 1 из 1
jdbc statement fetchsize и getBinaryStream
    #38893437
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я верно понимаю, то в jdbc при работе с ResultSet данные из БД фетчатся на клиента не по ондой, а некими пачками, размер которой определяется FetchSize у Statement. Подскажите, как в этой ситуации происходит работа с бинарными данными (блобами), они точно так же префетчатся и соответственно getBinaryStream создает поток связанный с данными уже на стороне java или все таки это работает иначе?

PS: oracle 11, соответствующий jdbc oci драйвер.
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893568
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,

Не пачки, а строки, по умолчанию 10 строк. Если в строке, если есть колонка с get...Stream()-типом, это значение равно 1. ( раньше так было )
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893573
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AFAIK:
По доке, до 11 версии, в случае наличия BLOB полей pre-fetch/bulk array вообще отключался

С версии 11.2 появилась возможность pre-fetch блобов. По доке, pre-fetch в thin-драйвере может работать в нескольких режимах (настраивается):
1. префетч данных, без блобов
2. префетч данных и блоб-локаторов
3. префетч данных, блоб-локаторов и небольших блобов (подозреваю, те которые store in row).

Собственно данные блобов так же пытаются обрабатывать блоками по сколько-то там байт (лень смотреть в доку).

Доки и ноты местами противоречат друг другу (возможность в драйвере появилась/поменялась, а в доке и JavaDoc местами оставлена старая информация + для ряда нот непонятно с какой версии Oracle они не актуальны).

Т.ч. желательно разбираться с реальной проблемой, в реальном контексте, на реальном железе и оборудовании.
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893578
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDНе пачки, а строки...
По английски вроде "Bulk" (Bulk array, Bulk fetch size etc...)

lingvo.yandex.ru:
груда, кипа; масса; большое количество; основная масса....
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893591
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev0FDНе пачки, а строки...
По английски вроде "Bulk" (Bulk array, Bulk fetch size etc...)

lingvo.yandex.ru:
груда, кипа; масса; большое количество; основная масса....

void setFetchSize(int rows)
Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for ResultSet objects generated by this Statement.
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893593
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FD,
имею в виду, что выполняется префетч 10 строк (10 строк я называю пачкой строк). В общем еще раз, юз кейс следующий:
1. В БД есть таблица TABLE_NAME, одна из колонок которой имеет тип BLOB
2. Выставляем FetchSize и делаем запрос:
stmt.setFetchSize(10);
ResultSet rs = stmt.executeQuery("SELECT * FROM TABLE_NAME");

После этого у меня на сторону java пойдет выкачивание 10 BLOB'ов? Или данный тип данных в любом раскладе не будет выкачиваться, до того момента, пока его явно не попросят, через rs.getBytes или rs.getBinaryStream?
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893599
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Спасибо, ключевой момент - блоб локаторы, сами блобы не префетчатся, дальше все логично.
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893617
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot just_vladimir]После этого у меня на сторону java пойдет выкачивание 10 BLOB'ов?/quot]
Коротко и не правильно:
нет, не пойдет
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893628
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot just_vladimir]После этого у меня на сторону java пойдет выкачивание 10 BLOB'ов?/quot]
Коротко и не правильно:
нет, не пойдет

Более полно:
http://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleStatement.html#setLobPrefetchSize_int_

Но в данном вопросе доки местами не корректны, а местами просто безбожно врут. Лично я бы, если нет проблемы, особо бы не парился и без лишней необходимости ничего с дефолта не убирал. Ну и вообще, смотрел бы в код thin jdbc драйвера, что бы проверить, что же на самом деле происходит.
...
Рейтинг: 0 / 0
jdbc statement fetchsize и getBinaryStream
    #38893636
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
ага, уже разобрался в концепции того как работает, за ссылку на доку с параметром отдельное спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jdbc statement fetchsize и getBinaryStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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