AI Briefing

MongoDB WiredTiger, 페이지 연결 제거로 동시성 제어 단순화

·2025.02.20 00:00

핵심 내용

WiredTiger는 페이지 간 연결을 제거해 분할 시 잠금 복잡도를 낮추고, 리프 페이지에 배열과 스킵 리스트를 혼용해 성능을 최적화한다.

1 / 15

자세히 보기

MongoDB v6.0의 WiredTiger 스토리지 엔진은 기존 B+Tree와 달리 동일 레벨 페이지 간 연결을 유지하지 않는다. 이는 페이지 분할(Page Split) 시 인접 페이지의 포인터 수정과 복잡한 잠금 과정을 제거하여 원자적 연산을 단순화하고 동시성 제어의 복잡도를 낮추기 위함이다.

리프 페이지 내부에서는 조회와 수정 성능을 균형 있게 잡기 위해 두 가지 데이터 구조를 혼용한다. 디스크에서 로드된 정렬된 레코드(WT_ROW)는 배열로 저장되어 이진 탐색을 통한 빠른 조회를 지원한다. 반면, 새로운 키 삽입 시 배열의 이동 비용을 피하기 위해 스킵 리스트(Skip List)를 사용한다. 기존 키의 수정이나 삭제는 WT_UPDATE 구조체를 통해 연결 리스트 형태로 관리되며, 이는 MVCC(다중 버전 동시성 제어)를 지원한다.

InnoDB와의 비교에서 WiredTiger는 페이지 연결이 없는 대신 낙관적 동시성 제어(Optimistic Concurrency Control)를 채택한 반면, InnoDB는 페이지 간 양방향 연결 리스트를 유지하며 비관적 동시성 제어(Pessimistic Concurrency Control)를 사용한다. 테스트 결과, 메모리 내 스킵 리스트를 통한 조회 시 정렬 방향에 따라 약 7% 정도의 성능 차이가 발생했으나, WT_ROW 배열을 통한 조회에서는 차이가 거의 없었다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.