Skip to main content
QUICK REVIEW

[논문 리뷰] CoroBase: Coroutine-Oriented Main-Memory Database Engine

Yongjun He, Jiacheng Lu|arXiv (Cornell University)|2020. 10. 29.
Distributed systems and fault tolerance인용 수 5
한 줄 요약

CoroBase는 주로 메모리 기반 데이터베이스 엔진에서 상호 트랜잭션 배치를 가능하게 하는 코루틴-트랜잭션 모델을 도입하여, 백그라운드에서 비동기 프리패칭을 통해 데이터 스탠스를 은폐하면서도 기존 호환성을 유지한다. 48코어 서버에서 최적화된 기준 대비 읽기 중심 워크로드에서 최대 2배의 성능 향상을 달성한다.

ABSTRACT

Data stalls are a major overhead in main-memory database engines due to the use of pointer-rich data structures. Lightweight coroutines ease the implementation of software prefetching to hide data stalls by overlapping computation and asynchronous data prefetching. Prior solutions, however, mainly focused on (1) individual components and operations and (2) intra-transaction batching that requires interface changes, breaking backward compatibility. It was not clear how they apply to a full database engine and how much end-to-end benefit they bring under various workloads. This paper presents \corobase, a main-memory database engine that tackles these challenges with a new coroutine-to-transaction paradigm. Coroutine-to-transaction models transactions as coroutines and thus enables inter-transaction batching, avoiding application changes but retaining the benefits of prefetching. We show that on a 48-core server, CoroBase can perform close to 2x better for read-intensive workloads and remain competitive for workloads that inherently do not benefit from software prefetching.

연구 동기 및 목표

  • CPU-메모리 성능 격차로 인한 포인터 추적에 의한 데이터 스탠스 문제를 해결한다.
  • 기존 소프트웨어 프리패칭 기법이 다중 키 인터페이스나 개별 연산에 국한되어 응용 프로그램 수준의 변경이 필요로 하는 한계를 극복한다.
  • 기존 호환성을 유지하면서도 상호 트랜잭션 배치를 지원함으로써 전체 데이터베이스 엔진에서 종단 간 성능 향상을 달성한다.
  • 경량적인 컨텍스트 스위칭을 활용해 계산과 데이터 프리패칭을 트랜잭션 간에 효과적으로 겹치는 코루틴 기반 실행 모델을 설계한다.
  • 생산 수준의 데이터베이스 엔진에서 다양한 워크로드에 대해 코루틴 기반 프리패칭의 실제 성능 영향을 평가한다.

제안 방법

  • 코루틴으로 트랜잭션을 모델링하여 세밀한 협업 멀티태스킹과 상호 트랜잭션 배치를 가능하게 한다.
  • 경량 코루틴(요청 단위)과 고수준 코루틴 스케줄러(다중 트랜잭션 간 배치 관리)로 구성된 이중 수준 코루틴 아키텍처를 도입한다.
  • 포인터 간접 참조 지점에 프리패칭 및 일시정지 연산을 삽입하여 메모리 접근과 계산을 겹치게 한다.
  • C++20 코루틴을 활용해 저수준 상태 기계 관리 없이도 비동기적이고 파ipel라인화된 실행을 간편하게 구현한다.
  • 기존 단일 레코드 트랜잭션 인터페이스가 코루틴 기반 배치와 공존할 수 있도록 기존 호환성을 유지한다.
  • 메모리 프로파일과 스위칭 오버헤드를 최소화하기 위해 코루틴 프레임 관리를 최적화하여 성능과 자원 사용량의 균형을 확보한다.

실험 결과

연구 질문

  • RQ1응용 프로그램 변경 없이도 전체 데이터베이스 엔진 수준에서 코루틴 기반 소프트웨어 프리패칭을 효과적으로 적용할 수 있는가?
  • RQ2코루틴을 통한 상호 트랜잭션 배치에 의해 내부 트랜잭션 또는 개별 솔루션 대비 종단 간 성능 향상은 어느 정도 달성될 수 있는가?
  • RQ3프리패칭 이점이 없는 워크로드에서 코루틴-트랜잭션 배치의 성능에 어떤 영향을 미치는가?
  • RQ4고병행 환경에서 이중 수준 코루틴 아키텍처가 성능, 메모리 오버헤드, 스위칭 비용 간의 균형을 어떻게 유지하는가?
  • RQ5현대 다코어 서버에서 실제 데이터베이스 워크로드에서 코루틴 기반 프리패칭이 데이터 스탠스를 얼마나 효과적으로 은폐할 수 있는가?

주요 결과

  • CoroBase는 코루틴을 활용한 상호 트랜잭션 배치를 통해 데이터 스탠스를 효과적으로 은폐함으로써 읽기 중심 워크로드에서 최대 2배의 성능 향상을 달성한다.
  • 코루틴-트랜잭션 모델은 기존 응용 프로그램 인터페이스나 트랜잭션 API를 변경하지 않고도 투명한 성능 향상을 가능하게 한다.
  • 프리패칭 이점이 없는 워크로드에서도 CoroBase는 최적화된 기준과 경쟁 가능하며, 성능 저하가 최소한임을 시사한다.
  • 이중 수준 코루틴 아키텍처는 메모리 프로파일과 스위칭 오버헤드를 감소시켜 단일 수준 코루틴 모델보다 더 뛰어난 성능을 달성한다.
  • 상호 트랜잭션 배치는 내부 트랜잭션 배치에 비해 특히 짧거나 단일 레코드 트랜잭션에서 프리패칭 기회를 크게 증가시킨다.
  • C++20 코루틴의 사용은 소프트웨어 프리패칭의 구현을 단순화하면서도 낮은 스위칭 비용을 유지하여 생산용 데이터베이스 엔진에 실용적으로 적용 가능하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.