DB

[MySQL] (연결최적화1️⃣) JDBC 드라이버 설정 핵심 옵션 정리

인생아 2025. 7. 18. 19:03
반응형

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

 

반응형