대용량 쿼리 결과를 그리드로 열거나, ERD/메타데이터를 대량 로딩하거나, 데이터 내보내기(Export)를 수행할 때 DBeaver가 멈추거나 아래와 같은 오류가 발생하는 경우가 있습니다.
- java.lang.OutOfMemoryError: Java heap space
이런 경우 대부분은 DBeaver 자체가 JVM 위에서 동작하기 때문에, DBeaver 프로세스에 할당된 Java Heap(-Xmx) 이 부족해서 생깁니다.
1) 먼저 확인: 힙을 늘리기 전에 정말 필요한지 점검
힙을 늘리기 전에 아래 3가지를 먼저 점검하면, 힙을 안 늘려도 문제가 사라지는 경우가 많습니다.
(1) 결과 셋(Row) 너무 많이 가져오고 있지 않나요?
- SELECT * FROM big_table; 같은 쿼리로 수십만~수백만 행을 그리드로 당겨오면 DBeaver가 메모리를 크게 씁니다.
- 우선은 아래처럼 제한을 둡니다.
SELECT *
FROM big_table
LIMIT 10000;
(2) Result Set Fetch Size / Max Rows 제한
DBeaver는 “얼마나 많이 가져올지” 설정이 있습니다.
- Preferences → Database → Result Sets
- Maximum number of rows (권장: 10,000~50,000)
- Fetch size (DB 성격 따라 1,000~10,000)
대용량 결과를 UI로 보기보다, Export/스크립트/파일로 처리하는 것이 안정적입니다.
(3) Export 시 “In-Memory” 로 쌓고 있지 않나요?
CSV/Excel Export 과정에서 중간 버퍼를 메모리에 많이 쌓으면 힙이 급격히 증가합니다.
가능하면 스트리밍/분할 옵션을 사용하고, Excel은 특히 메모리를 많이 사용합니다.
2) 본론: DBeaver JVM 힙 메모리 늘리는 방법
DBeaver는 실행 시 JVM 옵션을 읽는데, 설치 형태에 따라 파일 위치가 다릅니다. 핵심은 아래 2개입니다.
- -Xms : 초기 힙
- -Xmx : 최대 힙 (이 값을 올리면 “힙을 늘리는 것”)
권장 값 가이드
- RAM 16GB: -Xmx4096m(4GB) 또는 -Xmx6144m(6GB)
- RAM 32GB: -Xmx8192m(8GB)까지도 실무에서 흔함
주의: 힙을 너무 크게 잡으면 GC 지연으로 UI가 더 끊길 수 있습니다. 보통 4~8GB가 체감상 적당한 편입니다.
3) Windows: dbeaver.ini에서 -Xmx 수정
파일 위치 예시
- 설치형(기본):
- C:\Program Files\DBeaver\dbeaver.ini
- zip/portable:
- 압축 푼 폴더 안 dbeaver.ini
수정 예시
dbeaver.ini 열고 아래 항목을 찾습니다.
-Xms256m
-Xmx1024m
다음처럼 늘립니다.
-Xms512m
-Xmx4096m
저장 후 DBeaver 완전 종료 → 재실행 하세요. (프로세스가 남아 있으면 반영이 안 됩니다.)
4) macOS: DBeaver.ini 위치 및 수정
macOS는 앱 번들 내부에 ini가 있습니다.
- Finder에서 DBeaver.app 우클릭 → “패키지 내용 보기”
- 보통 아래 경로 중 하나:
- DBeaver.app/Contents/Eclipse/dbeaver.ini
- DBeaver.app/Contents/Resources/dbeaver.ini (버전에 따라 다를 수 있음)
동일하게 -Xmx 값을 올립니다.
-Xms512m
-Xmx4096m
5) Linux: 설치 방식에 따라 ini 수정
- tar.gz 설치: 설치 폴더의 dbeaver.ini
- snap 설치: 경로가 다를 수 있어 “설정 파일 위치”를 DBeaver 실행 로그에서 확인하는 편이 안전합니다.
6) 설정이 실제로 반영됐는지 검증하는 법
(1) DBeaver 실행 파라미터 확인(가장 확실)
- OS별로 프로세스 확인:
- macOS/Linux: ps aux | grep dbeaver
- Windows: 작업 관리자에서 “명령줄” 표시 설정 후 확인
명령줄에 -Xmx4096m 같은 값이 보이면 반영된 겁니다.
(2) 여전히 OOM이 난다면: “힙 문제”가 아니라 “쿼리/결과 로딩 방식” 문제일 수 있음
힙을 4GB→8GB로 늘려도 계속 터지면 보통 아래 중 하나입니다.
- 결과를 UI 그리드로 너무 많이 로딩
- Export를 Excel로 한 번에 생성
- 드라이버/플러그인에서 메모리 누수(특정 DB 드라이버에서 간헐적으로 발생)
7) 운영 팁: 힙을 늘리는 것보다 효과가 큰 5가지
- 결과 조회는 LIMIT + 필요한 컬럼만
- DBeaver의 Maximum rows 제한 적극 사용
- 대용량은 UI 대신 Export를 CSV로, 가능하면 분할
- JOIN/GROUP BY 결과가 큰 경우 임시 테이블/CTE로 단계 분리
- 드라이버 업데이트(특히 JDBC) 및 DBeaver 최신 버전 유지
'SQL' 카테고리의 다른 글
| MYSQL 설치 에러 - This application requires latest Visual Studio 2019 x64 Redistributable 해결 (0) | 2025.10.23 |
|---|---|
| SQL에서의 LATERAL JOIN (0) | 2025.06.26 |
| OLAP과 OLTP란? (3) | 2025.06.23 |
| 슈퍼키란? (0) | 2025.05.17 |
| 스키마(Schema)란? (0) | 2025.05.17 |