spring data jpa - hibernate页面请求内存不足(1mil页面大小)

时间:2014-12-10 19:57:35

标签: spring hibernate spring-data spring-data-jpa

我从MSSQL中的视图中每页提取100万个文档进行索引。它适用于3页,然后要么内存不足,要么永远!有些东西没有从记忆中清除。有人可以帮助如何在每次页面请求后清除缓存吗?我正在使用LocalContainerEntityManagerFactoryBean另外,有没有更有效的方法来获取这些数据(大约3亿行)?

PAGE_SIZE = 1百万

    int i = 0;
    PageRequest pageRequest = new PageRequest(i, PAGE_SIZE);
    Page<Item> page = myRepository.findAll(pageRequest);
    int maxPages = -1;
    maxPages = page.getTotalPages();
    do {
        for (Item t : page.getContent()) {
        ...... processing ......
        pageRequest = new PageRequest(i, PAGE_SIZE);
        page = myRepository.findAll(pageRequest);
        i ++;
    } while (i < maxPages);

1 个答案:

答案 0 :(得分:0)

在向db发出另一个请求之前,您必须逐出/清除会话。

session.evict(page); // removes page instance from memory
session.clear();  //clears session when doing batch updates