패스트캠퍼스 백엔드 부트캠프 3기/database

[database] Transaction Control, Dictionary

hail2y 2025. 2. 10. 12:26

Transaction은 논리적인 업무의 작업단위를 의미한다

  • SAVEPOINT
  • ROLLBACK
  • COMMIT
  • DDL과 DCL은 auto-commit이 된다.
명령어 설명
COMMIT 아직 저장되지 않은 모든 데이터 변경 사항을 데이터베이스에 저장하고 현재의 트랜잭션을 종료
SAVEPOINT 현재의 트랜잭션에 savepoint를 지정
ROLLBACK
(ROLLBACK TO [savepoint 이름])
아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료

 

1. commit, rollback 이전의 상태

  • 단지 버퍼에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다
  • 현재 사용자는 select 문으로 작업의 결과를 확인할 수 있다
  • 다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다
  • 변경된 행은 Lock이 설정되어서 다른 USER가 변경할 수 없다

이때의 Lock은 Re-entrant Lock으로 재진입 락이다. 원래는 뮤텍스(mutex;mutual exclusive)로 lock(1)과 unlock(0) 상태 두 가지 중 하나만 가질 수 있어 Lock을 가진 객체여도 sync 블록에 다시 들어가지 못 했지만, 재진입 락은 이때의 Lock을 본인이 가지고 있다면 다시 들어갈 수 있게 허용한 것이다. 

2. commit 이후의 상태

  • 데이터에 대한 변경사항(After Image)은 데이터베이스에 반영된다
  • 이전 데이터는 영원히 잃어버리게 된다
  • 모든 사용자는 결과를 볼 수 있다
  • 관련된 행에 대한 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다

3. rollback 이후의 상태

  • 데이터에 대한 변경사항이 취소된다
  • 이전 데이터(Before Image)는 다시 재저장된다
  • 관련된 행에 대한 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다

 

Dictionary는 데이터베이스에 대한 정보(장애에 대한 해결 정보)를 가지고 있고 DBMS가 자동으로 생성하고 관리한다. 읽기 전용(read-only)으로만 제공되는 뷰와 테이블의 집합이다.