nuclear_kote
@nuclear_kote

Сдохнет или нет jvm без пэгинации?

PreparedStatement ps = db.preparedStatement("select * from tbl");
ResultSet rs = ps.executeQuery();
while(rs.next) {
 ...
    process(...);
...
}

сдохнет jvm если в tbl будет over 1 000 000 000 строк? или он вычитывает построчно из базы?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
@forspamonly2
ждбц-шные резалтсеты читают записи курсором построчно. если вы не будете складировать полученное в памяти внутри своего process, то размер выборки может быть произвольно большим.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Смотря что у вас в строках, какими ресурсами располагает хост, какой сборщик мусора используется, как настроена JVM и т.д. и т.п. Есть программы на Java, которые работают с терабайтными хипами.
Ответ написан
Комментировать
nectar92
@nectar92
Java-разработчик
Все зависит от конкретной ситуации(какая БД, используемые драйвер, объем данных).
В последний раз при обработке большой таблицы я инициализировал statement так:
PreparedStatement preparedStatement = connection.prepareStatement(query,
                ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        preparedStatement.setFetchSize(fetchSize);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы