커넥션
- 커넥션은 DB와 클라이언트 간의 TCP 소켓을 통한 물리적인 연결(채널)이다
- 클라이언트가 데이터베이스 서버에 연결을 요청하면 커넥션을 맺게 된다
- 한 커넥션에서 여러 개의 트랜잭션을 동시에 실행시킬 수 없다
세션
- 사용자가 데이터베이스에 연결된 상태를 의미한다
- 세션은 DB와 클라이언트 간의 논리적인 연결이라고도 할 수 있다
- 커넥션 하나 당 여러 개의 세션을 가질 수 있다 (또는 세션을 아예 가지지 않을 수도 있다)
- 커넥션을 통한 모든 요청은 세션을 통해서 실행된다
- 쉽게 말해서 실제 SQL 쿼리 실행은 세션을 통해 이루어진다
- 사용자가 커넥션을 닫으면 세션은 종료된다
- 커넥션이 닫히면 세션은 종료되고, 커밋되지 못한 트랜잭션은 롤백된다.
커넥션을 파이프로, 세션을 파이프를 이루는 와이어들로 생각하면 개념이 쉽게 와닿을 것이다.
참고
- https://dba.stackexchange.com/questions/13698/what-is-the-difference-between-a-connection-and-a-session
- https://pysql.tecladocode.com/section08/lectures/05_connections_vs_transactions/
- http://haisins.epac.to/wordpress/?p=431
- https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:5671284058977
- 스프링 DB 1편
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 인덱스(Index) (0) | 2021.08.05 |
---|---|
[데이터베이스] 정규화 정리 (0) | 2021.03.14 |
[데이터베이스] 데이터베이스란? (0) | 2020.12.31 |