이것저것 개발기록

"DB 연결이 너무 느리다면?" 커넥션 풀(Connection Pool)의 원리 본문

IT 이야기

"DB 연결이 너무 느리다면?" 커넥션 풀(Connection Pool)의 원리

Garam Kim 2026. 1. 7. 12:00

"매번 DB를 연결하는 데 걸리는 시간, 아깝지 않으신가요?"
서버의 응답 속도를 높이고 안정성을 책임지는 데이터베이스 커넥션 풀(DBCP)의 내부 동작을 알아봅니다.

1. 커넥션 풀이란?

DB 연결은 비용이 매우 비싼 작업입니다. 매번 TCP 연결을 맺고 끊는 대신, 서버가 실행될 때 미리 일정 수의 연결을 만들어 '풀(Pool)'에 담아두고, 필요할 때 빌려줬다가 다 쓰면 반납받는 방식을 말합니다.

2. 왜 써야 할까? (장점)

  • 응답 속도 향상: 연결을 맺는 과정이 생략되어 쿼리 실행 시간이 단축됩니다.
  • 부하 조절: 무한정 연결이 생성되는 것을 막아 DB 서버가 과부하로 죽는 것을 방지합니다.
  • 자원 재사용: 이미 생성된 객체를 재사용하여 서버 메모리를 효율적으로 씁니다.

💡 실무 노트

스프링 부트(Spring Boot)의 기본 커넥션 풀은 HikariCP입니다. 성능이 매우 뛰어나지만, 설정을 잘못하면 서비스 장애로 이어질 수 있어요.

팁: maximum-pool-size를 너무 크게 잡으면 DB 서버의 CPU와 메모리가 견디지 못하고, 너무 작게 잡으면 사용자가 대기 줄에서 기다리다 타임아웃이 납니다. 보통은 WAS의 스레드 수와 DB 서버의 사양을 고려해 최적의 수치를 테스트해 보는 것이 필수입니다. 또한, 쿼리 실행 후 커넥션을 제대로 닫지(반납하지) 않으면 '커넥션 누수'가 발생해 서버가 멈출 수 있으니 주의하세요.

"연결은 만드는 것보다 유지하고 관리하는 것이 더 중요합니다."