Transaction

개념

  • DB에서 하나의 작업을 안전하게 처리하도록 보장해주는 기능
  • Commit - 모든 작업이 성공하여 DB에 정상 반영하는 것
  • Rollback - 작업 중 단 하나라도 실패한 경우, 작업 이전으로 되돌리는 것

ACID 보장

  • Atomicity (원자성)
    • 트랜잭션 내의 작업들은 마치 하나의 작업인 것처럼 모두 성공 또는 실패해야 함
  • Consistency (일관성)
    • 모든 트랜잭션은 일관성 있는 DB 상태를 유지해야 함
  • Isolation (격리성)
    • 동시에 실행되는 트랜잭션들끼리 서로 영향을 미치지 않아야 함
  • Durability (지속성)
    • 트랜잭션이 성공적으로 끝내면 항상 결과가 기록되어야 함

격리성의 보장을 위한 트랜잭션의 격리 수준 4단계

  • READ UNCOMMITED (커밋되지 않은 읽기)
  • READ COMMITTED (커밋된 읽기) - 보편적이게 사용
  • REPEATABLE READ (반복 가능한 읽기)
  • SERIALIZABLE (직렬화 가능) - 가장 느림 (트랜 잭션을 거의 순서대로 실행)

DB의 연결 구조와 DB 세션

DB 연결 구조

  • 사용자가 WAS, DB 접근 툴과 같은 클라이언트를 사용하여 DB Sever에 접근
  • 연결 요청 시 커넥션을 맺고 이때 DB 서버 내부에 DB 세션을 생성
  • DB 세션이 해당 커넥션을 통한 모든 요청을 처리해줌
    • 커밋 또는 롤백을 통해 트랜잭션을 종료하고 나면, 새로운 트랜잭션을 다시 시작할 수 있음
    • 사용자가 커넥션을 닫거나, DBA가 세션을 강제로 종료하면 세션도 종료
  • 커넥션 풀이 10개의 커넥션을 생성하면, 세션도 개수에 맞춰 10개가 생성됨



인프런 - 김영한님의 Spring DB 강의를 정리한 내용입니다.


김영한님 인프런 강의

댓글남기기