본문 바로가기
CS

트랜잭션

by 일태찡 2023. 9. 17.

데이터베이스에서 하나 이상의 연산을 모아놓은 작업 단위이며 트랜잭션을 관리함으로써 데이터의 정합성 보장 가능

 

 

1. ACID 속성: 트랜잭션은 ACID(원자성, 일관성, 고립성, 지속성) 속성을 만족해야 함

 

2. Concurrency Control: 여러 트랜잭션이 동시에 실행될 때 데이터의 정합성을 유지하기 위해 교착상태와 같은 문제를 피해야 하며 락, 세마포어 등 다양한 동시성 제어 메커니즘 적용

 

  교착상태: 두 개 이상의 프로세스나 트랜잭션이 서로가 소유하고 있는 자원을 기다리면서 영원히 대기하는 상태

락(Lock)


읽기/쓰기 락: 한 프로세스가 데이터를 읽고 있는 동안 다른 프로세스가 해당 데이터를 수정하지 못하게 하는 락
행 레벨 락/테이블 레벨 락: 행 레벨 락은 개별 데이터 행에 락을 거는 것이고, 테이블 레벨 락은 전체 테이블에 락
옵티미스틱 락/페시미스틱 락: 옵티미스틱 락은 충돌이 발생할 확률이 낮다고 가정하고 락을 뒤늦게 거는 방식이고,  페시미스틱 락은 충돌이 발생할 확률이 높다고 가정하고 미리 락을 거는 방식

세마포어(Semaphore)
이진 세마포어: 두 개의 값(0, 1)만 가질 수 있는 세마포어로, 보통 상호 배타(mutual exclusion)을 위해 사용
카운팅 세마포어: 특정 수만큼의 프로세스나 스레드가 동시에 특정 자원을 사용할 수 있도록 하는 세마포어
레코드 버전 관리
(MVCC, Multi-Version Concurrency Contorl)
여러 버전의 데이터 레코드를 유지해, 트랜잭션들이 서로 블로킹 없이 동시에 수행 가능
2PL(Two Phase Locking) 모든 트랜잭션에서 락을 설정하는 단계와 해제하는 단계가 명확히 구분되어 있어, 교착상태를 예방하는 데 도움

 

3. Rollback & Commit: 문제가 발생하면 트랜잭션을 롤백하여 이전 상태로 되돌리거나, 문제가 없으면 커밋하여 데이터를 지속적으로 저장

 

예시

 

┌──────학생 수업 등록 절차──────────┐             

1. 수강 가능한 수업 목록 조회                                 

2. 선택한 수업의 잔여 자리 확인                              

3. 잔여 자리가 있다면 학생을 해당 수업에 등록      

4. 학생의 학점 및 수업료 계산과 갱신                     

└────────────────────────────┘            

 
┌────────학생 정보 변경 순서────────┐

1. 사용자 인증

2. 변경할 정보 입력

3. 데이터베이스에 정보 업데이트

4. 변경 내역 로깅

└────────────────────────────┘

'CS' 카테고리의 다른 글

데이터 표준화  (6) 2023.09.10
데이터 암호화 방법  (5) 2023.09.03