병행 제어(Concurrency Control)

병행 제어(Concurrency Control)

교과서 기초 개념 정리

 

병행 제어(Concurrency Control)


  • 동시에 여러 개의 트랜잭션(Transaction)을 병행 수행할 때 이들 명령이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 상호 작용을 제어하는 기술
  • 목적
    • 데이터베이스 공유도 최대화
    • 시스템 활용도 최대화
    • 데이터베이스 일관성 유지
    • 사용자 응답 최소화

 

병행 제어 기법


  • 타임스탬프 기법 - 시스템이 각 트랜잭션을 실행할 때 부여하는 값으로 읽거나 변경할 데이터에 대해 트랜잭션을 실행하기 전에 타임스탬프를 부여하고 타임스탬프 순서에 따라 트랜잭션 작업을 수행하도록 하는 기법
  • 2PL(Two-Phase Locking) 기법 - 트랜잭션들이 잠금, 잠금해제를 확장,축소단계로 수행하도록 한다
    • 확장(Growing) 단계 - 트랜잭션이 잠금만 수행 할 수 있고, 잠금해제는 수행 불가능한 상태
    • 축소(Shrinking) 단계 - 트랜잭션이 잠금 해제만 수행할 수 있고, 잠금은 수행할 수 없는 상태

 

병행 제어의 문제점


  • 갱신 분실(Lost Update) - 2개 이상의 트랜잭션이 같은 데이터를 공유하여 갱신할 때 갱신 결과의 일부가 소실
  • 비완료 의존성(Uncommitted Dependency) - 하나의 트랜잭션 수행이 실패한 후 회복되기 전에 다른 트랜잭션이 실패한 갱신 결과를 참조하는 현상
  • 모순성(Inconsistency, 불일치 분석) - 복수의 사용자가 동시에 같은 데이터를 갱신할 때 데이터베이스 내의 데이터들이 상호 일치하지 않아 모순된 결과가 발생하는 현상
  • 연쇄 복귀(Cascading Rollback) - 병행 수행되던 트랜잭션들 중 어느 하나에 문제가 생겨 롤백되는 경우 다른 트랜잭션들도 연쇄적으로 롤백되는 현상

 

잠금(Locking)


  • 데이터베이스 관리에서 하나의 트랜잭션에 사용되는 데이터를 다른 트랜잭션이 접근하지 못하게 하는 것을 의미
  • 데이터를 갱신할 때는 반드시 잠금(Lock), 실행(Execute), 해제(Unlock)의 규칙을 따라야 한다
  • 한번에 잠금 할 수 있는 단위(로킹 단위, Locking Unit)로 DB, Table, Record, Field 등을 사용 가능
  • 로킹(Locking) 단위와 공유도, 오버헤드는 반비례한다

📜 오버헤드

트랜잭션을 처리하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다

 

트랜잭션(Transaction)


  • 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 또는 한꺼번에 모두 수행되어야 할 일련의 논리적인 연산

 

트랜잭션의 성질 (ACID)

원자성(Atomicity)


  • 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 전혀 반영되지 않아야 한다
  • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다
  • 즉, 트랜잭션의 최종 결과는 항상 Commit 이거나 Rollback 이다

 

일관성(Consistency)


  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다
  • 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 후의 상태가 같아야 한다

 

격리성(Isolation, 독립성)


  • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없다
  • 수행 중인 트랜잭션은 완전히 완료될 때 까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다

 

지속성(Durability, 영속성)


  • 성공적으로 완료 된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 한다

 

회복(Recovery)


  • 장애 종류 - 트랜잭션 장애, 시스템 장애, 미디어 장애
  • 회복 - 손상 된 데이터베이스를 손상되기 이전의 상태로 복구시키는 작업
  • 회복 관리기(Recovery Management) - DBMS의 구성요소로써 트랜잭션 실행이 성공적으로 완료되지 못하면 트랜잭션이 데이터베이스에 생성했던 모든 변화를 취소(Rollback) 시킨 다음 트랜잭션 수행 이전의 상태로 복구하는 역할
  • 회복 수행 - 메모리 덤프(데이터베이스 복사), 로그(갱신 전 후 내용을 별도의 파일로 기록)

 

보안 생명주기(Secure SDLC, Secure Software Development Life Cycle)


  • 보안상 안전한 소프트웨어를 개발하기 위해 SDLC에 보안 강화를 위한 프로세스를 포함한 것
  • 소프트웨어의 유지보수 단계에서 보안 이슈를 해결하기 위해 소모되는 많은 비용을 최소화 하기 위해 등장
  • Secure SDLC의 대표적 방법론 - Secure S/W社 CLASP, MS社 SDL
속성설명
기밀성(Confidentiality)정보를 인가된 시간, 사용자, 기관에게만 공개 또는 처리
무결성(Integrity)데이터를 정확하고 완전한 상태로 보존하는 것. 외부로부터의 정보 변조를 차단
인증성(Authentication)정보를 보내는 사람의 신원을 확인
가용성(Availability)권한이 부여된 사용자는 언제든 시스템을 사용 할 수 있음
접근 제어(Access Control)인가된 사용자만 정보에 접근하도록 제어, 시스템의 자원 이용에 대한 불법적인 접근을 차단
부인 방지(Non-Repudiation)송신자의 송신 여부와 수신자의 수신 여부를 확인

 


© 2022. All rights reserved.