트랜잭션

박찬우·2024년 2월 1일

스프링 DB

목록 보기
10/53

트랜잭션

  • 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
  • 작업단위는 많은 질의어 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미
  • 예) INSERT 후 SELECT를 한다. 이 과정이 모두 1개의 트랜잭션안에서 일어나는 일
  • 반영은 commit 미반영은 rollback을 호출하면 된다.
  • 반영전에는 다른 세션은 바뀐 내용이 보이지 않고 현재 세션만 바뀐것이 보임
  • 커밋 모드
    • 수동 커밋
      • set autocommit false;
      • commit 또는 rollback를 직접 호출해야함
      • 호출없이 일정 시간이 지나면 rollback이 호출됨(설정이 따로 있음)
    • 자동 커밋(기본)
      • set autocommit true;
      • 자동으로 호출 됨

트랜잭션 ACID

  • 원자성(Atomicity)
    • 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다.
  • 일관성(Consistency)
    • 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야 한다.
  • 격리성(Isolation)
    • 동시에 실행되는 트랜잭션들이 서로에게 향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데이터 를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다.
  • 지속성(Durability)
    • 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 한다. 중간에 시스템에 문제가 발생해도 데이 터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 한다.
  • 트랜잭션 격리 수준 - Isolation level
    • READ UNCOMMITED(커밋되지 않은 읽기)
    • READ COMMITTED(커밋된 읽기)
    • REPEATABLE READ(반복 가능한 읽기)
    • SERIALIZABLE(직렬화 가능)
profile
진짜 개발자가 되어보자

0개의 댓글