본문 바로가기
김영한님 인강듣고/스프링 DB

트랜잭션 시작

by doriver 2024. 9. 23.

 

트랜잭션 ACID

트랜잭션은 일련의 작업들이 안전하게 처리되도록 보장해준다

원자성 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다.
커밋(Commit)  : 모든 작업이 성공해서 데이터베이스에 정상 반영되는 것
롤백(Rollback)  : 작업 중 하나라도 실패해서 transaction이전으로 되돌리는 것
일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 충족시켜야 한다.
격리성 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다.
예를 들어 동시에 같은 데이터를 수정하지 못하도록 해야 한다.
동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다.
지속성 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구가능해야 한다.

 

데이터베이스 연결 구조( DB세션 )

* 데이터베이스 서버에 연결을 요청하고 커넥션을 맺으면, 데이터베이스 서버는 내부에 세션이라는 것을 만든다. 
앞으로 해당 커넥션을 통한 모든 요청( SQL실행, 트랜잭션 시작,종료 ... )은 이 세션을 통해서 실행하게 된다.
* 사용자가 커넥션을 닫거나, DBA(DB 관리자)가 세션을 강제로 종료하면 세션은 종료된다.
* 커넥션 풀이 10개의 커넥션을 생성하면, 세션도 10개 만들어진다.



'김영한님 인강듣고 > 스프링 DB' 카테고리의 다른 글

트랜잭션 이해  (0) 2024.10.26
스프링 트랜잭션 시작  (1) 2024.10.26
JDBC이해  (0) 2024.10.17
DataSource의 이해  (0) 2024.07.30
커넥션 풀의 이해  (0) 2024.07.30