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