시작하면서
해당 글은 메타 코드 M에서 지원하는 정처기 필기 장학생에 합격하여 글을 작성하게 되었습니다.
메타 코드 해당 강의 보러 가기
참고 사항
- 플랫폼 => 이 뜻은 참고할 주제라는 뜻입니다.
- 이렇게 형관펜이 되어 있는 곳은 시험에 나오거나, 강조하고 싶은 부분이 있을 때 표시할 것입니다.
3-2. 데이터베이스 구축 - SQL 활용
3-2-1. 기본 SQL 작성
트랜잭션
데이터 베이스 관리 시스템에서 수행되는 일련의 작업들을 하나의 단위로 묶은 것.
트랜잭션의 특성(ACID)
- Atomicity(원자성)
- 트랜잭션 내의 모든 작업이 모두 수행되거나 모두 수행되지 않아야 함.
- Commit과 Rollback 명령어에 의해 보장받는 특성
- Consistency(일관성)
- 트랜잭션이 시작되기 전과 완료된 후에 데이터베이스의 상태는 규칙에 맞게 일관되어야 함.
- Isolation(고립성, 격리성)
- 여러 트랜잭션이 동시에 실행될 때, 트랜잭션 간 서로 영향을 끼칠 수 없음.
- Durability(지속성)
- 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 데이터베이스에 저장되어야 함.
트랜잭션의 상태

병행 제어
트랜잭션 간의 충돌을 방지하고 데이터베이스가 항상 일관된 상태를 유지하도록 하는 것.
- 병행제어의 목적
- 데이터베이스 공유 최대화
- 시스템의 활용도 최대화
- 데이터베이스 일관성 유지
- 사용자에 대한 응답시간 최소화
병행제어 기법
로킹(Locking)
- 데이터 항목에 대해 잠금을 설정하여 트랜잭션 간의 충돌을 방지하는 기법
- 로킹의 대상이 되는 객체의 크기를 로킹 단위 (Locking Granualrity) 라고 함
- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 크면 병행성 수준이 낮아짐 (여러 트랜잭션이 동시 수행되기 어려워짐)
- 로킹 단위가 작으면 로킹 오버헤드와 데이터베이스 공유도가 증가
- 오버헤드 : 작업을 처리하는 데 추가로 드는 시간이나 자원\
타임스탬프
- 각 트랜잭션에 고유한 타임스탬프를 부여하고, 타임스탬프를 기반으로 트랜잭션의 순서를 결정
- 트랜잭션이 데이터에 접근할 때 타임스탬프를 비교하여 순서대로 실행되도록 보장.
낙관적 검증(Optimistic Validation)
- 트랜잭션을 일단 수행하고, 충돌이 발생하면 트랜잭션을 롤백하고 다시 시도하는 기법
- 충돌이 빈번할 수록 오버헤드가 커짐, 충돌이 적을 수록 효율적임.
다중버전 동시성 제어(MVCC, Multi Version Concurrency Control)
- 데이터베이스의 각 데이터 항목에 대해 여러 버전을 유지하여, 트랜잭션이 특정 시점의 데이터를 읽도록 하여 충돌을 최소화하는 기법
2 Phase Commit
- 분산 데이터베이스에서 트랜잭션 일관성을 유지하기 위한 기술
- 트랜잭션을 준비, 완료의 두 단계로 분리하여 제어
- 성능이 느리고 복잡한 구현이 필요
트랜잭션의 회복 기법
지연 갱신 회복기법
- 로그 기반 회복기법으로, 트랜잭션의 의한 DB의 변경 사항을 로그에 기록만 하고 DB에는 커밋 시점에 반영
즉각 갱신 회복기법
- 로그 기반 회복기법으로, 트랜잭션에 의한 DB의 변경 사항을 즉시 DB에 반영
체크포인트 회복 기법
- 데이터베이스의 현재 상태를 특정 시점에 저장하여, 장애 발생 시 이 지점부터 복구를 진행
그림자 페이징 회복 기법
- 트랜잭션의 수행 시 복제본을 생성하고, 수정 완료 후에 기본 버전을 업데이트된 버전으로 대체하여 일관성을 유지
