거대한 테이블을 사용자 정의 XML 파일로 변환하는 작업이 있습니다. 나는이 일을 위해 자바를 사용할 것이다.거대한 테이블에서 모든 레코드를 검색 할 때 OOM (메모리 부족) 오류를 방지하는 방법?
단순히 "SELECT * FROM customer"를 발행하면 엄청난 양의 데이터가 반환되어 결국 OOM이 발생할 수 있습니다. 내가 궁금해, 내가 레코드를 즉시 사용할 수있게 처리 할 수있는 방법, 거기에 메모리에서 프로세스를 검색하는 동안 그 후에 레코드를 제거하는 것입니다 궁금해?
--- 2009 년 7 월 13 일 일요일 수정 됨
내 질문에 대해 자세히 설명해 드리겠습니다. 1 db 서버와 1 응용 프로그램 서버가 있습니다. 응용 프로그램에서 select 쿼리를 실행하면 데이터가 db 서버에서 응용 프로그램 서버로 이동합니다.
내가 틀렸다고 확신한다. ResultSet은 쿼리의 모든 레코드를받을 때까지 기다려야한다. 페치 크기를 4로 설정하더라도 1000- 레코드 테이블의 경우 응용 프로그램 서버의 힙 메모리에 1000 개의 레코드가 남아있게됩니다. 맞습니까? 가져 오기 크기는 DB 서버에서 /로 왕복하는 횟수에만 영향을줍니다.
제 질문은 앱 서버에 도착한 직후 그 4 개 (또는 모든 숫자) 레코드에 대한 처리를 시작하고 앱 서버에 메모리를 확보하기 위해 처분하는 방법입니다.
너무 국제이다 당신은 (즉 MS, Oracle, MySql 등)? 사용중인 용도에 따라이 문제를 처리하는 방법에는 여러 가지가 있습니다. –
레코드를 검색하는 데 사용하는 코드를 보여주십시오. 당신이 그것들을 반복하거나 컬렉션에 로컬로 저장 한 다음 그것을 반복한다면 그것은 명확하지 않습니다. –
이 작업을 위해 Oracle을 사용할 것입니다. 나는 아직 어떤 코드도 시작하지 않았다. 왜냐하면 나는 여전히 최선의 방법을 연구하고 있기 때문이다. – janetsmith