You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DB Connection Pool은 데이터베이스에 연결하는 데 필요한 연결 객체(Connection)들을 미리 생성해두고, 이 객체들을 재사용할 수 있도록 관리하는 기술
연결 객체를 재사용함으로써, 데이터베이스 연결 설정 시간을 절약
동시에 사용할 수 있는 최대 연결 수를 제한하여, 데이터베이스 서버의 부하를 관리할 수 있음
애플리케이션의 동시 사용자 수가 증가해도 효율적으로 연결을 관리할 수 있음
스레드 풀과 매우 유사하지만 스레드 풀은 CPU의 작업 처리 능력을 최적화 하기 위해 스레드를 관리하고 커넥션 풀은 데이터 베이스 연결 객체를 관리하여 데이터베이스 접근을 최적화 하므로 대상과 목적이 다름
커넥션 풀 동작 과정
초기화 : 애플리케이션이 시작되면 일정 수의 데이터베이스 연결을 미리 생성하여 커넥션 풀에 저장
연결 요청 : 애플리케이션에서 데이터베이스 접근이 필요할 때, 커넥션 풀에서 사용 가능한 연결 객체를 가져와 사용
작업 완료 : 데이터베이스 작업이 완료되면 연결을 닫는 대신, 커넥션 풀에 반환하여 다른 요청에서 재사용 가능
자원 해제 : 사용되지 않는 연결은 일정 시간이 지나면 자동으로 해제되거나 재활용됨
// java HikariCP 설정 예시HikariConfigconfig = newHikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("username");
config.setPassword("password");
config.setMaximumPoolSize(10); // 최대 10개의 연결을 유지HikariDataSourcedataSource = newHikariDataSource(config);
Connectionconnection = dataSource.getConnection();
// 데이터베이스 작업 수행connection.close(); // 실제로는 연결을 닫지 않고 풀에 반환
Ssafy Wizards CS Study
1. DB와 Client가 Connection을 어떻게 구성하는지 설명해 주세요.
네트워크 연결 설정
클라이언트가 데이터베이스 서버에 연결 요청
요청은 네트워크를 통해 이루어지며, 클라이언트는 데이터베이스 서버의 IP 주소와 포트 번호를 사용하여 접속
TCP 소켓 연결 생성
클라이언트와 서버 간에 TCP 소켓 연결 설정
이 소켓 연결은 클라이언트와 서버 간의 양방향 통신을 가능하게 하며, 데이터가 전송될 경로를 제공
핸드셰이크(Handshake)
클라이언트와 서버가 프로토콜 및 인증 요구사항 교환
핸드셰이크 과정에서는 서로의 프로토콜 버전, 인증 요구사항, 데이터 형식 등의 정보를 교환
이 단계에서 데이터베이스 서버는 클라이언트의 요청을 이해할 수 있는지, 클라이언트가 서버의 요구사항을 충족하는지 확인
인증(Authentication)
클라이언트의 인증 정보(사용자명, 비밀번호) 검증
데이터베이스 서버는 이 정보를 확인하여, 클라이언트가 데이터베이스에 접근할 수 있는 권한이 있는지 검증
인증이 성공하면, 클라이언트는 데이터베이스에 접근할 수 있게 되며, 실패하면 연결이 종료
세션(Session) 생성
인증 성공 시, 서버에서 클라이언트와의 세션 생성
이 세션은 클라이언트의 상태 정보를 유지하며, 데이터베이스에서 수행되는 작업의 컨텍스트를 제공
세션이 설정되면 클라이언트는 SQL 쿼리 등을 통해 데이터베이스와 상호작용할 수 있음
쿼리 실행 및 데이터 전송
클라이언트가 SQL 쿼리를 전송하고 서버가 응답
데이터베이스 서버는 쿼리를 실행한 후, 그 결과를 클라이언트에게 반환
이 데이터 전송은 설정된 TCP 소켓을 통해 이루어지며, 세션이 유지되는 동안 계속해서 클라이언트와 서버 간에 데이터가 주고받을 수 있음
세션 종료 및 연결 해제
작업 완료 후 세션 종료 및 TCP 소켓 연결 해제
연결 해제는 TCP 소켓을 닫는 것으로 이루어지며, 이를 통해 클라이언트와 서버 간의 통신이 끝남
커넥션 풀을 통한 커넥션 동작 방식
사전 연결 생성
애플리케이션이 시작될 때, 커넥션 풀은 미리 일정 수의 DB 연결(Connection)을 생성하고 유지
이 연결들은 미리 TCP 소켓 연결과 인증 과정을 거쳐 준비된 상태로 대기
연결 요청 시
클라이언트가 데이터베이스에 접근해야 할 때, 새로운 연결을 생성하지 않고, 커넥션 풀에서 이미 생성된 연결을 가져옴
클라이언트는 네트워크 연결 설정, TCP 소켓 연결 생성, 핸드셰이크 및 인증 과정 등을 거치지 않고 곧바로 데이터베이스와 상호작용할 수 있음