Java
Connection Pool 이해하기
코딩초
2023. 12. 14. 10:58
1. JDBC Driver
자바로 웹사이트를 만들때, 데이터를 다루기 위해 DB와 자바를 연결해야 한다.
자바 어플리케이션과 DBMS(DataBase Management System)는 서로 다른 시스템이기 때문에, 중간에 어댑터를 사용해서 상호 연결하여 사용한다.
이때, 자바 프로그램의 요청을 DBMS가 이해할 수 있도록 ( 클라이언트 사이드 어댑터 역할 ) 각 DB는 JDBC 드라이버를 제공한다.
2. 데이터베이스 커넥션 풀 (DBCP)
DB 커넥션
- DB를 사용하기 위해 DB와 애플리케이션 간 통신을 할 수 있는 수단
- DB Connection은 Database Driver와 Database 연결 정보를 담은 URL이 필요함
사용자가 요청할때마다 커넥션 객체가 생기면 서버에 과부하가 걸린다.
이를 방지하기 위해 커넥션 풀은 미리 일정 수 의 커넥션을 만들어서 보관한다.
요청이 발생하면 커넥션을 꺼내서 제공하고, 커넥션 사용이 끝나면 다시 받아서 풀에 넣어 보관한다.
장점은 다음과 같다.
- 대기시간의 감소
- 네트워크 부담 감소
- DB 접속 설정 객체를 미리 만들어 연결하여 메모리 상에 등록해 놓기 때문에 클라이언트가 빠르게 DB에 접속 가능
- DB Connection 수를 제한 할 수 있어서 과도한 접속으로 인한 서버 자원 고갈 방지 가능
- DB 접속 모듈을 공통화해 DB서버의 환경이 바뀔 경우 쉬운 유지보수 가능
- 연결이 끝난 Connection을 재사용함으로써 새로 객체를 만드는 비용을 줄일 수 있음.
3. 커넥션 풀 사용하기
- HikariCP - 스프링부트에 기본으로 내장되어있다. 커넥션 풀 관리를 위해 사용하는 JDBC 데이터베이스 커넥션 풀링 프레임워크이다.
- Tomcat DBPC - 핵심 클래스가 8개로 수정이 용이하며 속도가 빠르다.
- Apache Commons DBCP2 - 아파치에서 제공하는 오픈소스 라이브러리. 클래스 수가 60개라 복잡하다.
참고
https://steady-coding.tistory.com/564