| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- Generic method
- 벌크연산
- tracking-modes
- propagation
- hoisting
- optimistic lock
- COPYOFRANGE
- cross-cutting concerns
- #@Transacional
- demand paging
- NestJS 요청흐름
- TDZ
- CQS
- API
- type eraser
- 프로그래머스
- IllegalStateException
- 역정규화
- SPOF
- CORS
- ExceptionResolver
- 단어변환
- Java
- generic type
- Transaction
- HandlerMethod
- RequestMappingHandlerMapping
- assertJ
- wrapper class
- pessimistic lock
Archives
- Today
- Total
jingyulog
Connection Pool 본문
- DB Connection 획득 과정
- 애플리케이션 로직에서 DB 드라이버를 통해 커넥션 조회
- DB 드라이버가 DB와 TCP/IP Connection 연결
- DB 드라이버가 IP, PW 등 기타 부가정보를 DB에 전달
- DB는 ID, PW 를 통해 내부 인증 후 내부에 DB Session 생성
- DB는 Connection 생성 완료 응답을 보냄
- DB 드라이버는 Connection 객체를 생성해서 클라이언트에 반환
- 단점
- DB, 애플리케이션 서버에서 Connection 을 새로 생성하기 위해 Resource 를 매번 사용해야 한다.
- 고객이 애플리케이션을 사용할 때, SQL 을 실행하는 시간 + Connection 을 새로 만드는 시간이 추가되어 결과적으로 응답 속도에 영향을 미친다.
Connection Pool
- 애플리케이션을 시작하는 시점에 Connection 을 미리 생성해두고 사용한다.
- Connection Pool 에 들어있는 Connection 은 TCP/IP 로 DB 와 Connection 이 연결되어 있는 상태이기 때문에 언제든지 즉시 SQL을 DB에 전달할 수 있다.
- 애플리케이션 로직에서 이제는 Connection Pool 을 통해 이미 생성되어 있는 Connection 을 객체 참조로 가져다가 쓰면 된다.
- 애플리케이션 로직은 Connection Pool 에서 받은 Connection 을 사용해서 SQL 을 DB에 전달하고, 그 결과를 받아서 처리한다.
- 사용이 끝나면 살아있는 상태로 커넥션 풀에 반환한다.
- 대표적으로 hikariCp 를 사용한다.
#커넥션 풀 초기화 정보 출력
HikariConfig - MyPool - configuration:
HikariConfig - maximumPoolSize................................10 HikariConfig - poolName................................"MyPool"
#커넥션 풀 전용 쓰레드가 커넥션 풀에 커넥션을 10개 채움
[MyPool connection adder] MyPool - Added connection conn0: url=jdbc:h2:.. user=SA
[MyPool connection adder] MyPool - Added connection conn1: url=jdbc:h2:.. user=SA
[MyPool connection adder] MyPool - Added connection conn2: url=jdbc:h2:.. user=SA
[MyPool connection adder] MyPool - Added connection conn3: url=jdbc:h2:.. user=SA
[MyPool connection adder] MyPool - Added connection conn4: url=jdbc:h2:.. user=SA
...
[MyPool connection adder] MyPool - Added connection conn9: url=jdbc:h2:.. user=SA
#커넥션 풀에서 커넥션 획득1
ConnectionTest - connection=HikariProxyConnection@446445803 wrapping conn0: url=jdbc:h2:tcp://localhost/~/test user=SA, class=class com.zaxxer.hikari.pool.HikariProxyConnection
#커넥션 풀에서 커넥션 획득2
ConnectionTest - connection=HikariProxyConnection@832292933 wrapping conn1: url=jdbc:h2:tcp://localhost/~/test user=SA, class=class com.zaxxer.hikari.pool.HikariProxyConnection
MyPool - After adding stats (total=10, active=2, idle=8, waiting=0)'Tech > 스프링' 카테고리의 다른 글
| DB 락 ( Lock ) (0) | 2023.02.21 |
|---|---|
| Datasource (0) | 2023.02.20 |
| DriverManager (0) | 2023.02.20 |
| 데이터베이스 연결 (0) | 2023.02.19 |
| JDBC와 최신 데이터 접근 기술 (0) | 2023.02.19 |