커넥션 풀(Connection Pool)
DB랑 연결해 둔 통로(커넥션)를 미리 여러 개 만들어두고, 필요한 때 빌려 쓰는 시스템
"DB 연결을 매번 새로 만들지 말고, 미리 만들어 둔 걸 돌려 쓰자"
이게 왜 필요할까?
❌ 커넥션 풀이 없으면 ❌
1. 사용자가 요청
2. 서버가 DB에 새 연결 생성
3. 쿼리 실행
4. 연결 종료
< 문제 >
DB 연결 생성 = 생각보다 엄청 무거운 작업
요청이 많아지면 : DB 과부하, 서버 느려짐, 심하면 DB 다운
< 커넥션 풀 구조 >
[요청] → [커넥션 풀] → [DB]
↑ ↓
반납 대여
풀(pool) = 연결 보관소
커넥션 = DB랑 연결된 통로
내 프로젝트 코드에서 보자
@Autowired
private JdbcTemplate jdbcTemplate;
JdbcTemplate 자체가 커넥션을 만드는 게 아님
DataSource(= 커넥션 풀) 에서 커넥션을 빌려 씀
Controller
→ Service
→ Repository
→ JdbcTemplate
→ DataSource(커넥션 풀)
→ DB
실행 흐름 🔼
Spring Boot 쓰면 99% YES
Spring Boot 기본값: HikariCP (커넥션 풀계의 GOAT 🐐)
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
이렇게 하면 자동으로 커넥션 풀이 생성된다
커넥션 풀 안에서 실제로 벌어지는 일
요청 1개 들어오면
1. 풀에서 커넥션 하나 대여
2. SQL 실행
3. 커넥션 반납
jdbcTemplate.query(...);
// 내부적으로
// getConnection()
// execute
// close() → 실제 종료 ❌ 풀로 반환 ⭕
close() 해도 진짜 종료 아님
풀에 다시 넣는 것
풀 크기란?
예시 : spring.datasource.hikari.maximum-pool-size=10
동시에 DB 쿼리 가능한 최대 개수 = 10
요청 10개 바로 처리
요청 11개 대기
풀 없으면 실제로 터지는 상황
▪ 쇼핑몰 메인 페이지
▪ 상품 리스트 + 리뷰 + 이벤트 + 찜여부
▪ 사용자 50명 동시 접속
풀이 없다면
DB 연결 50개 생성, DB 사망
풀이 있다면(10개)
10개 처리, 나머지 대기, 안정적
정리
커넥션 풀 = DB 연결 재사용 창고
JdbcTemplate = 빌려 쓰는 사람
HikariCP = 관리자
close() = 반납
풀 크기 = 동시 처리량
'🍏 개발일기' 카테고리의 다른 글
| 코드 분석 : 글 1번 클릭했을 때 전체 흐름 (0) | 2026.02.10 |
|---|---|
| 스프링에서의 정적 리소스(static resources) 핸들러 (0) | 2026.02.10 |
| Git Bash 설치하고 간단하게 이름, 이메일 설정해보기 (0) | 2026.02.08 |
| GitHub와 Git Flow 실습: Windows에서 Feature 브랜치 작업하기 (0) | 2026.02.06 |
| Visual Studio Code(VS Code) 기초 정리 (0) | 2026.02.05 |