Как убедиться, что JdbcTemplate извлекает записи в набор результатов пакетами по 1000, если в операторе установлен setFeJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как убедиться, что JdbcTemplate извлекает записи в набор результатов пакетами по 1000, если в операторе установлен setFe

Сообщение Anonymous »

Как убедиться, что JdbcTemplate извлекает записи в результирующий набор пакетами по 1000, если в операторе установлен setFetchSize(1000)?
Здесь я использую драйвер JDBC PostgreSQL.
Ниже приведен мой код:

Код: Выделить всё

@Transactional(readOnly = true)
private void fetchAndRowCallBackProcessing(CSVPrinter csvPrinter) {
jdbcTemplate.query(con -> {
con.setAutoCommit(false); // This is not needed since I have used @Transactional
PreparedStatement ps = con.prepareStatement(
SQL,
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY
);
ps.setFetchSize(1000);
LOGGER.info("jdbcTemplate fetch size - " + jdbcTemplate.getFetchSize()); // Logged -1
LOGGER.info("ps fetch size - " + ps.getFetchSize()); // Logged 1000
return ps;
},
rs -> {
try {
if (rs.getString(1).equals("1740983035847")) // Just for debugging {
LOGGER.info("rs fetch size - " + rs.getFetchSize()); // Logged 1000
}
csvPrinter.printRecord( rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6),
rs.getString(7),
rs.getString(8),
rs.getString(9));
} catch (IOException e) {
e.printStackTrace();
}
});
}
Хотя rs.getFetchSize() регистрирует 1000, как я могу быть уверен, что фактические пакеты, извлеченные из БД в набор результатов, имеют размеры 1000, поскольку я вижу всплеск памяти в куче более минуты. В идеале, если в памяти единовременно остается только 1000 записей, большого скачка не должно быть. Может ли это быть связано с тем, что за это время были созданы какие-то другие объекты?
Примечание. Я провожу отладку на своем локальном компьютере, поэтому других входящих запросов нет.

Подробнее здесь: https://stackoverflow.com/questions/798 ... sult-set-i
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»