[논문 리뷰] DGCC:A New Dependency Graph based Concurrency Control Protocol for Multicore Database Systems
이 논문은 다중코어 메모리 기반 온라인 연산 처리(OLTP) 시스템에서 트랜잭션 실행과 동시성 제어를 분리하는 디펜던시 그래프 기반 동시성 제어 프로토콜인 DGCC를 제안한다. 트랜잭션 간 의존성을 사전 분석하고 실행 이전에 충돌을 해결함으로써 DGCC는 런타임 경쟁이 전혀 없는 고병렬성을 실현하며, 높은 경쟁 상황에서 최신 기술 프로토콜 대비 최대 4배 높은 처리량을 달성한다.
Multicore CPUs and large memories are increasingly becoming the norm in modern computer systems. However, current database management systems (DBMSs) are generally ineffective in exploiting the parallelism of such systems. In particular, contention can lead to a dramatic fall in performance. In this paper, we propose a new concurrency control protocol called DGCC (Dependency Graph based Concurrency Control) that separates concurrency control from execution. DGCC builds dependency graphs for batched transactions before executing them. Using these graphs, contentions within the same batch of transactions are resolved before execution. As a result, the execution of the transactions does not need to deal with contention while maintaining full equivalence to that of serialized execution. This better exploits multicore hardware and achieves higher level of parallelism. To facilitate DGCC, we have also proposed a system architecture that does not have certain centralized control components yielding better scalability, as well as supports a more efficient recovery mechanism. Our extensive experimental study shows that DGCC achieves up to four times higher throughput compared to that of state-of-the-art concurrency control protocols for high contention workloads.
연구 동기 및 목표
- 현대의 다중코어 메모리 기반 온라인 연산 처리(OLTP) 시스템에서 기존의 동시성 제어 프로토콜(예: 락 기반, 타임스탬프 기반)의 낮은 확장성과 성능 저하 문제를 해결한다.
- 중앙집중식 제어 컴포onent과 경쟁으로 인한 트랜잭션 실패가 병렬성과 처리량을 저해하는 문제를 극복한다.
- 의존성 분석을 실행과 분리함으로써 더 높은 트랜잭션 처리량을 달성하고, 세분화된 연산 수준의 병렬성을 활용한다.
- 중앙집중식 제어 컴포넌트가 없는 확장 가능한 시스템 아키텍처를 설계하고, 효율적인 복구 메커니즘을 통합한다.
제안 방법
- 병행 처리를 가능하게 하기 위해 트랜잭션을 버치로 묶고, 원자적 연산으로 분해한다.
- 각 버치의 트랜잭션에 대해 읽기-쓰기 및 쓰기-쓰기 충돌을 모델링하는 의존성 그래프를 구축한다.
- 의존성 그래프를 사용해 순서 가능 순서로 사전 스케줄링하여 런타임 경쟁을 제거한다.
- 상호 간 충돌이 없는 연산은 여러 스레드에서 병행 실행함으로써 순서 가능성을 보장한다.
- 실행 이전에 별도 단계에서 의존성 그래프를 처리함으로써 동시성 제어 로직을 실행에서 분리한다.
- 확장성 향상을 위해 글로벌 락 매니저나 타임스탬프 할당기와 같은 중앙집중식 컴포넌트를 제거한다.
실험 결과
연구 질문
- RQ1실행과 의존성 분석을 분리하는 동시성 제어 프로토콜이 고경쟁 다중코어 메모리 기반 온라인 연산 처리(OLTP) 워크로드에서 더 높은 처리량을 달성할 수 있는가?
- RQ2의존성 그래프를 통해 충돌을 사전 해결할 경우, 기존의 락 기반 또는 타임스탬프 기반 프로토콜과 비교해 실패율과 병렬성에 어떤 영향을 미치는가?
- RQ3중앙집중식 제어 컴포넌트가 없는 것이 다중코어 시스템에서 확장성에 얼마나 기여하는가?
- RQ4버치 크기와 의존성 그래프의 복잡도가 시스템 지연과 처리량에 어떤 영향을 미치는가?
주요 결과
- DGCC는 TPC-C와 YCSB와 같은 고경쟁 워크로드에서 최신 기술 동시성 제어 프로토콜 대비 최대 4배 높은 처리량을 달성한다.
- 의존성 그래프 구축 단계에서 충돌을 해결함으로써 실패율을 크게 감소시킨다.
- 버치 크기가 일정 수준까지 증가하면 처리량이 증가하지만, 이후 더 큰 의존성 그래프로 인해 지연이 증가하기 시작한다.
- 더 많은 워커 스레드에 대해 효과적으로 확장되며, 계산 자원을 최대한 활용하기 위해 더 큰 버치 크기 필요.
- 글로벌 락 매니저나 타임스탬프 할당기와 같은 중앙집중식 컴포넌트 제거로 인해 시스템의 확장성이 향상된다.
- 프로토타입은 고성능 장애 복구를 지원하면서도 처리량을 희생시키지 않는 효율적인 복구 메커니즘을 통합하고 있다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.