|
|
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
Если я верно понимаю, то в jdbc при работе с ResultSet данные из БД фетчатся на клиента не по ондой, а некими пачками, размер которой определяется FetchSize у Statement. Подскажите, как в этой ситуации происходит работа с бинарными данными (блобами), они точно так же префетчатся и соответственно getBinaryStream создает поток связанный с данными уже на стороне java или все таки это работает иначе? PS: oracle 11, соответствующий jdbc oci драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 13:07 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
just_vladimir, Не пачки, а строки, по умолчанию 10 строк. Если в строке, если есть колонка с get...Stream()-типом, это значение равно 1. ( раньше так было ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:18 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
AFAIK: По доке, до 11 версии, в случае наличия BLOB полей pre-fetch/bulk array вообще отключался С версии 11.2 появилась возможность pre-fetch блобов. По доке, pre-fetch в thin-драйвере может работать в нескольких режимах (настраивается): 1. префетч данных, без блобов 2. префетч данных и блоб-локаторов 3. префетч данных, блоб-локаторов и небольших блобов (подозреваю, те которые store in row). Собственно данные блобов так же пытаются обрабатывать блоками по сколько-то там байт (лень смотреть в доку). Доки и ноты местами противоречат друг другу (возможность в драйвере появилась/поменялась, а в доке и JavaDoc местами оставлена старая информация + для ряда нот непонятно с какой версии Oracle они не актуальны). Т.ч. желательно разбираться с реальной проблемой, в реальном контексте, на реальном железе и оборудовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:21 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
0FDНе пачки, а строки... По английски вроде "Bulk" (Bulk array, Bulk fetch size etc...) lingvo.yandex.ru: груда, кипа; масса; большое количество; основная масса.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:24 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:32 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:33 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Спасибо, ключевой момент - блоб локаторы, сами блобы не префетчатся, дальше все логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:41 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
[quot just_vladimir]После этого у меня на сторону java пойдет выкачивание 10 BLOB'ов?/quot] Коротко и не правильно: нет, не пойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 14:57 |
|
||
|
jdbc statement fetchsize и getBinaryStream
|
|||
|---|---|---|---|
|
#18+
[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 драйвера, что бы проверить, что же на самом деле происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2015, 15:04 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=139&tid=2125742]: |
0ms |
get settings: |
4ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 323ms |

| 0 / 0 |
