|
|
|
JDBC, huge ResultSet, memory
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть огромная таблица, в ней огромное количество записей. необходимо пройтись по всем записям и что-то с ними сделать. Проблема в том, что после выполнения запроса, спустя какое-то время (в зависимости от настроек Xmx, Xms, Xmn и в зависимости от размера fetchSize) начинаются проблемы с памятью. Существует ли возможность каким-либо образом "сбрасывать" resultSet? Т.е., к примеру, после миллиона итераций resultSet.next() выполнить освобождение памяти для resultSet. Или только один вариант - разбивать запрос на несколько и выполнять несколько запросов? Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 21:09:28 |
|
||
|
JDBC, huge ResultSet, memory
|
|||
|---|---|---|---|
|
#18+
Стоит сначала поковырять настройки ResultSet-а Например: http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#setFetchSize(int) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 21:18:19 |
|
||
|
JDBC, huge ResultSet, memory
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСтоит сначала поковырять настройки ResultSet-а Например: http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html#setFetchSize(int) Ага, пробовал. Чем больше fetchSize, тем быстрее выполняется запрос и быстрее растет память Чем меньше fetchSize, тем память медленнее растет, чаще вызывается gc, вначале редко вызывается full gc, потом чаще, но работает быстрее, чем если бы fetchSize был большим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 21:43:15 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38316409&tid=2129070]: |
0ms |
get settings: |
15ms |
get forum list: |
25ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
52ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 297ms |
| total: | 493ms |

| 0 / 0 |
