상세 컨텐츠

본문 제목

큐브리드 ini 설정파일 수정, 데이터 추출 성능 개선하기

IT/DB

by JR 2026. 1. 14. 14:49

본문

300x250
반응형

 

 

데이터 추출을 하다보면 데이터 양이 많은 경우에 프로그램이 뻗는 경우가 종종 있는데

 

ini 설정파일에서 메모리 값을 수정하여 해결할 수 있는 방법이 있습니다.

 

단, 컴퓨터 사양에 맞게 수치를 설정하여야 하니 사양에 맞게 설정하는 방법을 알아보았습니다. 

 


우선 큐브리드 프로그램이 설치된 폴더 경로로 가보면 CUBRID 매니저(또는 CUBRID 관련 GUI 도구) 가 실행될 때 사용하는 
Eclipse 기반 구성 설정(확장자 ini 파일) 이 있습니다. 

 

 

 

 

 


전체 성격 한 줄 요약

Eclipse 런처 + JVM 옵션 설정 파일
→ 프로그램 실행 방식 + Java 메모리 설정을 정의


1️⃣ -startup

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar

의미

  • Eclipse 기반 애플리케이션의 시작 런처 JAR 지정
  • org.eclipse.equinox.launcher
    → Eclipse OSGi 프레임워크 실행 담당

📌 즉
👉 “이 JAR로 프로그램을 시작해라”


2️⃣ --launcher.library

--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.0.v20100503

의미

  • OS / 아키텍처에 맞는 네이티브 런처 라이브러리
  • win32.win32.x86_64
    • Windows
    • 64bit 환경

📌 Eclipse가 JVM을 띄우기 위한 부트스트랩용 네이티브 코드


3️⃣ -vmargs

-vmargs

의미

  • 이 아래부터는 전부 JVM 옵션
  • Eclipse 옵션과 Java 옵션을 구분하는 경계선

👉 이 줄 아래는 Java 힙 / GC / 메모리 설정


4️⃣ -Xms40M

-Xms40M

의미

  • JVM 초기 힙 메모리 크기
  • 프로그램 시작 시 최소 40MB 확보

📌 너무 작으면

  • 실행 초반 GC 자주 발생
  • UI 느려질 수 있음

5️⃣ -Xmx800M

-Xmx800M

의미

  • JVM 최대 힙 메모리 크기
  • 최대 800MB까지 사용 가능

📌 CUBRID Manager에서

  • 대량 쿼리 결과 조회
  • 로그/모니터링 기능 사용할 때 필요

6️⃣ -XX:PermSize=64M

-XX:PermSize=64M

의미

  • Permanent Generation (PermGen) 초기 크기
  • 클래스 메타데이터 저장 공간
  • 초기값 64MB

7️⃣ -XX:MaxPermSize=256M

-XX:MaxPermSize=256M

의미

  • PermGen 최대 크기: 256MB

📌 이 값이 부족하면

java.lang.OutOfMemoryError: PermGen space

⚠️ 중요한 시대적 배경 (아주 중요)

이 설정은 Java 7 이하 기준입니다.

Java 8 이상에서는?

  • ❌ PermGen 자체가 제거됨
  • ✔ Metaspace로 변경

👉 Java 8+ 환경이면

-XX:PermSize
-XX:MaxPermSize

👉 무시되거나 경고만 출력


🔧 요약 표

설정 의미
-startup Eclipse 런처 JAR
--launcher.library OS별 네이티브 런처
-vmargs JVM 옵션 시작
-Xms40M 초기 힙
-Xmx800M 최대 힙
PermSize 클래스 메모리 (Java 7↓)

💡 실무 팁

  • CUBRID Manager 느리면
    👉 -Xms / -Xmx 늘리는 게 체감 큼
  • Java 8 이상이면
    👉 Perm 옵션 제거해도 됨
  • 메모리 부족 오류 나면
    👉 힙 vs PermGen 구분이 중요

 

여기서 결국 초기힙, 최대힙 메모리 수치를 변경해주면 되는데 컴퓨터 성능에 맞게 수정하면 됩니다.


오히려 잘못 세팅하면 프로그램이 더 빨리 죽을 수도 있습니다.

 

아래를 꼭 보고 판단하셔야 합니다.

 


🔴 한 줄 결론 (중요)

-Xms8000M -Xmx8000M 은
PC 메모리, Java 버전, 프로그램 구조가 맞지 않으면
시작도 못 하거나 OS 전체가 느려질 수 있다.


1️⃣ -Xms = -Xmx 로 맞추는 건 좋은가?

✅ 장점

  • 힙 확장/축소 없음 → GC 안정적
  • 대용량 결과 조회 시 OutOfMemory 위험 감소
  • 대량 데이터 추출 시 성능 일관성 유지

👉 “메모리 충분할 때”는 좋은 세팅


❌ 단점

① 프로그램 시작부터 8GB 확보

  • 실행 즉시 8GB 메모리 고정
  • 실제로 안 써도 반환 안 함

② PC RAM 부족 시

  • Windows 전체 스와핑 발생
  • UI 멈춤 / 강제 종료 가능
  • 다른 프로그램까지 영향

📌 RAM 16GB 미만이면 매우 위험


2️⃣ 가장 흔한 오해 ❌

“힙을 크게 주면 데이터가 아무리 많아도 안 죽는다”

❌ 틀림

  • 추출 과정에서
    • 전체 결과를 메모리에 올리면 → 죽음
    • GC가 감당 못 하면 → 죽음
  • 힙이 아니라
    • Native memory
    • Metaspace
    • Thread stack
      에서 터질 수도 있음

3️⃣ CUBRID Manager 기준 현실적인 추천값

💻 PC RAM 기준 추천

PC RAM추천 JVM 옵션
8GB ❌ 8GB 절대 금지
16GB -Xms1G -Xmx4G
32GB -Xms2G -Xmx8G
64GB -Xms4G -Xmx12G

👉 최대힙은 물리 메모리의 40~50% 이내


4️⃣ 진짜 중요한 포인트 (메모리보다 중요 🔥)

✔ “추출 방식”이 핵심입니다

❌ 위험한 방식

  • 한 번에 수백만 행 조회
  • GUI 화면에 전체 로딩
  • CSV 엑셀 바로 열기

✅ 안전한 방식

  • LIMIT / OFFSET
  • 기간 분할 조회
  • 서버에서 파일로 추출
  • CLI(cubrid export) 사용

5️⃣ 안전한 설정 예시 (추천 ⭐)

-Xms1024M
-Xmx4096M
-XX:MetaspaceSize=128M
-XX:MaxMetaspaceSize=512M

 

👉 Java 8+ 기준


6️⃣ 정말 8GB 힙이 필요할 때 체크리스트

형님이 아래 모두 만족하면 가능은 합니다:

  • ✔ PC RAM ≥ 32GB
  • ✔ Java 64bit
  • ✔ 다른 대형 프로그램 종료
  • ✔ CUBRID Manager 최신
  • ✔ 추출 작업이 주 용도

👉 하나라도 아니면 ❌


🔥 최종 정리

질문
8GB 힙 주면 안 죽나? ❌ 보장 안 됨
성능 좋아지나? ⚠️ 경우에 따라
추천하나? ❌ 무작정은 절대 NO
더 중요한 것 추출 방식

 

 

결국 적정 수치는 gpt에 ram 메모리와 자바 버전을 알려주고 적당한 수치를 알려달라고 하면 알려주니

 

그 수치로 한번 최소힙, 최대힙 Xms 수치를 바꿔주면서 추출 테스트를 해보시기 바랍니다!

 

저는 램 8G, 자바 버전은 8인데 아래처럼 추천해줘서 설정해봤는데 확실히 프로그램 안뻗고 추출이 잘되었습니다.

 

(30만건까지는 우선 추출 및 파일 내려받기까지 성공)

 

2️⃣ 현재 PC 환경에서 현실적인 JVM 세팅 (추천 ⭐)

- 램 메모리: 8G

- 자바 버전: 8

✔ 가장 안정적인 세팅

 
-Xms512M
-Xmx2048M
-XX:MetaspaceSize=128M
-XX:MaxMetaspaceSize=256M

✔ 추출 작업이 잦다면 (조금 공격적)

 
-Xms1024M
-Xmx3072M
-XX:MetaspaceSize=128M
-XX:MaxMetaspaceSize=256M
 
 

Xmx 4G 이상은 비추천 (8G RAM 기준)

 

 

 

300x250
반응형

관련글 더보기