보람찬 코기의 개발자 블로그
article thumbnail
반응형

Concurrency Control


동시성 제어 란?

동시성 제어는 여러 트랜잭션이 동시에 데이터베이스에 접근하고 수정하는 경우 발생할 수 있는 간섭과 충돌을 방지하며, 데이터의 일관성과 무결성을 유지하는 데 중요한 역할을 한다.

 

특히 은행, 증권사, 카드사와 같은 기업의 데이터베이스는 다수의 사용자가 거래를 수행하고 동시에 업데이트를 진행할 수 있기 때문에 이러한 환경에서는 동시성 제어가 필수적이다.

 

동시성 문제를 관리하기 위해 데이터베이스 시스템은 여러 기술과 기법을 사용한다.

예를 들면 트랜잭션 격리 수준, 락(lock) 메커니즘, 교착상태(데드락) 방지 등이 있다. 이러한 기술들은 동시성을 보장하면서도 성능을 최적화하는 데 도움을 준다.

 

 

동시성 제어 기법

제어 기법 설명
락킹 트랜잭션이 데이터 잠금 설정시 다른 트랜잭션은 해당 데이터에 대해 잠금 해제 될때 까지 접근/수정/삭제 불가
타임스탬프 시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭선에 부여하여 접근 순서를 미리 정한다 
적합성 검증 먼저 트랜잭션을 수행하고 트랜잭션을 종료할때 적합성을 검증하여 최종 반영

 


트랜잭션 직렬화

 

트랜잭션 직렬화는 데이터베이스 시스템이 안정적이고 예측 가능한 방식으로 다수의 트랜잭션을 처리할 있도록 보장한다.

 

이를 통해 데이터베이스에서의 데이터 일관성과 무결성이 유지되며, 여러 사용자 간의 동시성이 확보됩니다.

  • 동시성 제어: 여러 트랜잭션이 동시에 실행될 때, 서로 간섭이나 충돌을 방지하는 메커니즘. 이를 통해 트랜잭션 간의 일관성을 유지한다.
  • 시리얼 가능성: 트랜잭션 직렬화는 여러 트랜잭션이 순차적으로 실행될 때와 동일한 결과를 보장. 즉, 동시에 실행되는 것과 순차적으로 실행되는 것 사이에는 결과적으로 차이가 없어야 한다.
  • 그래프 이론: 트랜잭션 직렬화는 방향성 그래프로 나타낼 수 있다. 이 그래프에서 각 트랜잭션은 노드를 나타내고, 트랜잭션 간의 실행 순서를 나타내는 방향성 있는 에지가 있다.
  • 교착상태(데드락) 방지: 트랜잭션 직렬화는 데드락을 방지하기 위해 트랜잭션 간의 에지가 사이클을 형성하지 않도록 관리한다.
반응형
profile

보람찬 코기의 개발자 블로그

@BoChan

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!