반응형
MySQL과 Java 애플리케이션을 연결할 때 가장 먼저 고려할 것이 JDBC 설정이다.
JDBC URL에 어떤 옵션을 넣느냐에 따라 성능, 안정성, 트랜잭션 처리 방식까지 달라질 수 있다.
이 글에서는 실무에서 자주 사용되는 핵심 설정 옵션들을 정리해본다.

🔌 기본 JDBC URL 형식
jdbc:mysql://호스트:포트/데이터베이스?옵션1=값1&옵션2=값2...
예시:
jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
🧩 꼭 알아야 할 주요 옵션 정리
✅ useSSL
SSL 암호화를 사용할지 여부
useSSL=false
- 기본값: true
- false로 설정 안 하면 경고 로그 발생 가능
- SSL 인증서를 사용하지 않을 경우 반드시 false로 지정
반응형
✅ serverTimezone
서버의 시간대(Timezone) 지정
serverTimezone=Asia/Seoul
- 설정하지 않으면 The server time zone value is unrecognized 오류 발생
- 애플리케이션과 DB 서버 간 시간 불일치를 방지
✅ characterEncoding
클라이언트에서 사용할 문자 인코딩
characterEncoding=UTF-8
- UTF-8을 사용하지 않으면 한글 깨짐 가능성 있음
- useUnicode=true와 함께 설정 시 가장 안전
✅ allowPublicKeyRetrieval
비밀번호 암호화 모드 사용 시 키 조회 허용 여부
allowPublicKeyRetrieval=true
- 보안 모드에서 로그인 실패 시 필요한 옵션
- SSL 없이 연결할 때 caching_sha2_password 오류 발생 시 사용
✅ autoReconnect
연결이 끊겼을 때 자동 재연결
autoReconnect=true
- 일반적으로는 커넥션 풀에서 처리하기 때문에 비추천
- MySQL 공식 문서에서도 사용 자제 권장
🔧 성능 최적화 관련 옵션
✅ rewriteBatchedStatements=true
대량 INSERT 시 성능 향상
rewriteBatchedStatements=true
- PreparedStatement의 addBatch() 사용 시 필수
- 수천 건의 데이터 INSERT 시 2~5배 속도 향상
✅ cachePrepStmts=true
PreparedStatement 캐싱
cachePrepStmts=true
prepStmtCacheSize=250
prepStmtCacheSqlLimit=2048
- JDBC 내부에서 SQL을 메모리에 캐싱하여 응답 시간 개선
- 트래픽이 많은 서비스에서 매우 유효함
반응형
🚫 실무에서 자주 발생하는 문제
| 문제 상황 | 관련 옵션 | 해결 방법 |
| 한글 깨짐 | characterEncoding | UTF-8 + useUnicode=true 설정 |
| SSL 경고 메시지 | useSSL | false로 명시 설정 |
| 시간대 오류 | serverTimezone | Asia/Seoul 등 명확히 지정 |
| 로그인 오류(caching_sha2_password) | allowPublicKeyRetrieval | true로 설정 필요 |
| Batch INSERT 속도 저하 | rewriteBatchedStatements | true 설정 필수 |
💡 설정 예시 모음
일반 개발 환경
jdbc:mysql://localhost:3306/mydb?
useSSL=false&
serverTimezone=Asia/Seoul&
characterEncoding=UTF-8&
useUnicode=true
대량 INSERT 환경
jdbc:mysql://localhost:3306/mydb?
useSSL=false&
rewriteBatchedStatements=true&
cachePrepStmts=true&
prepStmtCacheSize=250&
prepStmtCacheSqlLimit=2048
📌 마무리 요약
- JDBC 설정은 단순한 연결이 아니라 성능과 안정성의 기초 작업
- SSL, 타임존, 인코딩 관련 문제는 미리 차단 가능
- 대량 처리 시 옵션 추가로 속도 차이가 확연하게 나타남
- Spring Boot를 사용하는 경우 application.properties에서도 동일한 옵션 적용 가능
다음 글에서는 커넥션 풀(HikariCP)의 설정과 튜닝 방법을 다뤄보자.
📘 공식 문서 참고
https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] (연결최적화5️⃣) 커넥션 누수 원인 진단과 해결 전략 (1) | 2025.07.18 |
|---|---|
| [MySQL] (연결최적화4️⃣) 트랜잭션 전파 방식과 커넥션 이슈 분석 (0) | 2025.07.18 |
| [MySQL] (연결최적화3️⃣) 커넥션 타임아웃 설정과 오류 해결법 (0) | 2025.07.18 |
| [MySQL] (연결최적화2️⃣) 커넥션 풀의 개념과 실무 설정 가이드 (0) | 2025.07.18 |
| [MySQL] (GIS6️⃣) 실무에서 자주 쓰는 공간 쿼리 예제 모음 (0) | 2025.07.18 |
| [MySQL] (GIS5️⃣) ST_Distance로 거리 계산하는 방법과 주의사항 (0) | 2025.07.18 |
| [MySQL] (GIS4️⃣) 공간 인덱스의 원리와 설정 방법 (1) | 2025.07.18 |
| [MySQL] (GIS3️⃣) POLYGON과 공간 포함관계 쿼리 실습 (4) | 2025.07.18 |