powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC fetch size, row size and cursor
14 сообщений из 14, страница 1 из 1
JDBC fetch size, row size and cursor
    #39143699
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста что и когда нада использовать и что это такое вопше ибо у меня в голове уже каша :

1) что такое fetch size in ResultSet
2) что такое row size in Statement
3) как пользоваться курсором в JDBC, как подключить и т/д/

никак не пойму как оно работает если у меня в БД 100000000 записей. Оно по дефолту (10) ровов из БД тянет или например 100 кеширует и по 10 из кеша тянет ! не пойму
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143709
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
botasa111,

1) Не очень понятно зачем ты полез в fetchSize. Можно спокойно использовать JDBC API и без этих знаний.
Но вот тебе фрагмент из JDBC 4.1 Specification. Его можно легко нагуглить.

Performance Hints

The Statement interface has two methods that can be used to provide hints to a
JDBC driver: setFetchDirection and setFetchSize. The values supplied to these
methods are applied to each result set produced by the statement. The methods of
the same name in the ResultSet interface can be used to supply hints for just that
result set.

Hints provided to the driver via this interface may be ignored by the driver if they
are not appropriate.The methods getFetchDirection and getFetchSize return the current value of the
hints. If either of these methods is called before the corresponding setter method has
been called, the value returned is implementation-defined.

2) По getMaxRowSize в документе вообще толком ничего нет. Он просто упоминается
в структуре DataSourceLimits. Размерность я-бы уточнил. Байты. Символы. Колонки. Х.З.

3) Проще всего найти любой JDBC example но для твоей DBMS.

никак не пойму как оно работает если у меня в БД 100 000 000 записей.
Непонятно как тебе объяснить не зная твоего уровня. Курсор - это итератор.
Или канал через который можно выкачать последовательно все твои 100 мильйонов строк.
Вопрос опережающего кеширования или страничного для нас сейчас остаётся за кадром.
Он зависит от DBMS (для Оракла он будет один а для МССКЛ - другой) а fetchSize
как описано выше это hint. Или подсказка. Это означает что ты можешь ставить любые
настройки но драйвер будет их использовать не как директивы а как рекомендации.
Тоесть может использовать а может и нет. А может взять свои по дефолту (ХЗ как оно
на самом деле. Надо уточнять доку по твоему драйверу).

Вобщем любые конкретные вопросы дальше имеют смысл только по конкретному драйверу.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143745
botasa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ну я понял так что ФЕТЧ используется что бы указать по сколько РОВОВ будет он тянут из БД то есть не сразу все, а кусочками где то писали что это примерно дефолтное значение 10 хотя и зависит от драйвера, потому что ДЖБС АПИ это просто напросто набор классов и интерфейсов без конкретной реализации и какой то вендор надает имплементацию их и делает как он хочет. НА счет РОВ САЙЗ то прочитал что это для того что бы установить максимальное количество РОВОВ в Резалт СЕТЕ дефолтное значение думаю что в конкретном драйвере есть.

Я вот сам процесс понимаю : пошел запрос - вернули ответ в резалт сет, но не все 100к РОВОВ а там например 50 ибо у нас бы был АУТофМЕМОРИ Еррор и резалт сет по немногу тянет из БД по порциям например по 50 подгружает и мы дальше может по них перемещаться. (это для перфоменса сделано так)
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143747
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
botasa111,
по простому
вар1
Код: java
1.
2.
res = выполнитьQuery //скачает только 10 записей. Задержка кода минимальна.
ЦИКЛ будет подкачивать по мере твоего похода по циклу


вар2
Код: java
1.
2.
res = выполнитьQuery //тупо код встанет на этой строке и всё зависнет пока не скачает весь миллион
ЦИКЛ 


без всяких error
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143749
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего OutOfMemory вызывает ваш прикладной код. Вот его и надо смотреть.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143817
iamdennis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
botasa111Я вот сам процесс понимаю : пошел запрос - вернули ответ в резалт сет, но не все 100к РОВОВ а там например 50 ибо у нас бы был АУТофМЕМОРИ Еррор и резалт сет по немногу тянет из БД по порциям например по 50 подгружает и мы дальше может по них перемещаться. (это для перфоменса сделано так)

У меня в старом проекте Java 1.4 по разным условиям программы выбирали 20 млн. записей из 2 миллиардов.
Далее зависит от того, где Вы их храните, и что с ними делаете. Если запись с сотнями/тысячами атрибутов,
и хранить всё это в самой программе, то и при работе с 1000 записями будет OutOfMemoryError.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143868
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем из базы скачивать такой объём строк?
чтоб ручками скролить, а глазками смотреть?
чтоб фильтровать/сортировать на клиенте?
даже если с помощью курсора выбирать по 20-30 ?
чтоб ручками менять несколько записей?
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143931
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, ты неверно вопрос ставишь. Основание выгрузить даже всё БД можно
найти. К примеру он пишет процесс экспорта или миграции в другю систему.

Другое дело как он поступает с курсором. Обрабатывает построчно или
зачем-то аккумулирует в heap.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143943
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonвадя, ты неверно вопрос ставишь. Основание выгрузить даже всё БД можно
найти. К примеру он пишет процесс экспорта или миграции в другю систему.

Другое дело как он поступает с курсором. Обрабатывает построчно или
зачем-то аккумулирует в heap.
очень неудачный пример - через файл будет быстрее...
скорее всего - неумение работать с sql
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143945
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя, какой файл? Базы данных нельзя мигрировать файлом браток.

Это я тебе как бывший DBA говорю.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143951
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonвадя, какой файл? Базы данных нельзя мигрировать файлом браток.

Это я тебе как бывший DBA говорю.
через экспорт/импорт csv? не делал?
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143959
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonБазы данных нельзя мигрировать файлом браток.о_О да ладно
pg_dump например создаёт один файл
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143960
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net, о Грас. Рад тебя видеть.
...
Рейтинг: 0 / 0
JDBC fetch size, row size and cursor
    #39143961
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonвадя, какой файл? Базы данных нельзя мигрировать файлом браток.

Это я тебе как бывший DBA говорю.
через экспорт/импорт csv? не делал?
Пускай автор скажет что у него за DBMS.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC fetch size, row size and cursor
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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