본문 바로가기
기타의 기타/정보처리기사

[정보처리기사 실기]SQL응용 - 트랜잭션, 병행제어, 격리수준, 회복기법

by n년차초보개발자 2023. 2. 21.
728x90
반응형

이번년도에는 꼭 붙어야 하기 때문에.. 

내가 볼 목적으로 이론 기준으로 정리해 두려고 한다..

이번엔 꼭 붙자!

 

트랜잭션 : 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본단위

 

특성 : 원일영고

원자성(Atomicity)  트랜잭션의 연산 전체가 성공 또는 실패되어야 함(All or Nothing) Commit/Rollback
회복성 보장
일관성(Consistency) 시스템이 갖고있는 고정요소는 트랜잭션 수행 전/후가 같아야 한다 무결성 제약조건
동시성 제어
격리,고립성(Isolation) 동시에 실행중인 트랜젝션이 서로 영향을 미치지 않아야 한다. Read Uncommited
Read Commited
Repeatable Read
Serializable
영속성(Durability) 성공완료된 트랜잭션의 결과는 영속적으로
데이터베이스에 기록되어야 한다
회복기법

 

격리수준(isolation level)

  • Read Uncommited : 커밋되기 전에도 내용을 볼 수 있음(현황파악오류[Dirty Read]발생 가능)
  • Read Commited : 커밋완료된 후에 내용을 볼 수 있음
  • Repeatable Read :동일 트랜잭션 내에서는 한번 select한 값은 다시 select해도 트랜잭션 종료시까지 같은값 출력보장
  • Serializable : 순서대로 처리

※ RepeatableRead는 Update는 막아주지만 Insert된 값까지 막아주진 못한다.

따라서 동일 트랜잭션 내에서 새로운 행이 Insert된 경우 Select한 값이 달라질 수 있다

 

트랜잭션 제어언어(TCL)

    커밋,롤백,체크포인트(Rollback을 위한 시점을 지정)

 

병행제어 

: 다수의 사용자환경에서 여러 트랜잭션을 수행할 때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 방법

 

  • 목적

        - 데이터베이스의 공유를 최대화 한다.

        - 시스템 활용도를 최대화 한다.

        - 데이터베이스의 일관성을 유지한다.

        - 사용자에대한 응답시간을 최소화한다.

 

  • 병행제어 미보장시 문제점 : 갱현모연

        - 갱신손실(LostUpdate) 

            먼저 실행 된 트랜잭션의 결과를 나중에 실행 된 트랜잭션이 덮어쓸 때 발생하는 오류

        - 현황파악오류(DirtyRead) 

            트랜잭션의 중간결과를 다른 트랜잭션이 참조하여 발생하는 오류

        - 모순성(Inconsistency) 

            두 트랜잭션이 동시에 실행되어 데이터의 일관성이 결여되는 오류

        - 연속성(LostUpdate) 

            복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소한 경우에

            트랜잭션이 처리한 곳의 부분을 처리하지 못한 경우

 

  • 병행제어기법의 종류 

        - 로킹(Locking)

            * 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해

               트랜잭션의 순차적 진행을 보장하는 직렬화 기법(정의)

            * 트랜잭션은 로킹된 데이터에 대해서만 작업을 수행한다.

            * 데이터를 잠궈(Lock)서 다른 트랜잭션에서 접근하지 못하도록 하는 방법.

                ※ 로킹의 특징

                        ⇒  데이터베이스, 파일, 레코드 등은 로킹단위가 될 수 있다.

                        ⇒  로킹단위가 작아지면(↓) 로킹 오버헤드가 증가(↑)

                        ⇒  로킹단위가 작아지(↓)면 데이터베이스 공유도가 증가(↑)

                        ⇒  한번에 로킹할 수 있는 객체의 크기를 로킹단위라고 함

        - 낙관적 검증(Optimistic Validation) 

            * 트랜잭션이 어떠한 검증도 없이 일단 트랜잭션을 수행하고,

              트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법

        - 타임스탬프 순서(Time Stamp Ordering)

            * 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에,

              타임스탬프를 부여하여 부여된 시간순서대로 작업을 수행하는 기법

        - 다중버전 동시성제어(MVCC:Multi Version Concurrency Control)

            *  트랜잭션의 타임스탬프와 접근하려는 데이터의 타임스탬프를 비교하여
               직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

 

회복기법 회로체크

: 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업

 

    - 로그기반 회복기법

        * 지연갱신 회복기법(Deferred Update)

            트랜잭션이 완료되기 전까지 데이터베이스를 기록하지 않는 기법

        * 즉시갱신 회복기법(Immediate Update)

            트랜잭션 수행 중 결과를 DB에 바로 반영하는 기법

    - 체크포인트 회복기법(Checkpoint Recovery)

        : 장애발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애발생 이전의 상태로 복원시키는 방법

    - 그림자페이징 회복기법(Shadow Paging Recovery)

        : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 장애 시 이를 이용해 복구하는 기법

728x90
반응형

댓글