SXSSF
XSSF와 SXSSF 차이점이 궁금해서 정리해 봄
특징
- XSSF의 메모리 부족 관련 보완하여 XSSF보다 매우 큰 엑셀 파일을 생성할 수 있음
- XSSF는 전체 행에 대한 컨트롤이 가능하지만 SXSSF는 지정된 행 (window size)에 관해서만 컨트롤이 가능해서 메모리를 적게 사용
- 지정된 행을 벗어나면 가장 낮은 행은 엑세스 할수 없음 -> 메모리에서 삭제/임시 파일에 저장됨
- flushRows를 호출함으로써 수동으로 메모리에서 삭제 / 저장 할수 있음
XSSF와의 차이점
- 제한된 수의 행만 접근 가능
- Sheet.clone() 사용 못함
- 수식 평가 사용 못함
엑셀 파일(xlsx) 생성 과정
Sheet 생성
- sheet 마다 임시 파일(xml / gz)을 생성해서 기록함 / 20 MB정도의 csv 파일이 몇 GB 크기가 될수 있음
- 압축여부에 따라 GZIPSheetDataWriter / SheetDataWriter 객체 생성 - 성능에 영향 미침
Row 생성
- row 생성할때마다 접근가능한 windowSize를 체크해서 지정된 크기가 초과하는 부분은 메모리에서 삭제 및 임시 파일에 저장
- java.io.Writer
write ???
- 임시 파일 생성 - poi-sxssf-template.xlsx
- 임시 파일에 데이터 저장 및 압축
참고
'기타' 카테고리의 다른 글
[Jenkins] pipeline jdk 설정 (1) | 2022.02.01 |
---|---|
[Jenkins] SSH 사용 - pipeline SSH Agent (0) | 2022.02.01 |
[Jenkins] - docker / docker-compose를 사용하여 설치 (0) | 2022.01.31 |
[Git] revert - 특정 시점으로 원복 (0) | 2021.05.15 |
[Tool] vscode-python 환경 설정 (0) | 2019.05.30 |