피드로 돌아가기
Highlights from Git 2.55
GitHub BlogGitHub Blog
Infrastructure

Incremental MIDX 및 Geometric Repacking을 통한 대규모 Repo 최적화

Highlights from Git 2.55

Natalie Guevara2026년 6월 29일16advanced

Context

대규모 저장소 내 다수의 Packfile 발생으로 인한 개별 인덱스 탐색 비용 증가 문제 발생. 단일 MIDX 구조는 업데이트 시 전체 파일을 다시 작성해야 하는 높은 유지보수 비용을 초래함.

Technical Solution

  • MIDX를 레이어 체인 형태로 저장하여 신규 Pack 생성 시 기존 레이어 수정 없이 팁에 추가하는 Append-only 구조 설계
  • repack.midxNewLayerThreshold 임계값을 통해 팁 레이어의 Pack 규모를 모니터링하고 Repacking 대상 선정
  • repack.midxSplitFactor 기반의 Geometric Repacking 알고리즘을 적용하여 인접 레이어의 객체 수 합계가 임계치 초과 시 단일 레이어로 병합
  • --max-count-oldest 옵션 도입으로 전체 이력 포맷팅 없이 최하단 범위의 특정 커밋만 추출하는 효율적 리스트 조회 구현
  • Fetch 협상 단계에서 includerestrict 옵션을 통해 특정 Reference만 Have-line으로 전송하도록 제한하여 협상 오버헤드 감소
  • --graph-lane-limit 설정을 통해 복잡한 히스토리 그래프의 가시성을 확보하고 렌더링 부하 제어

- 대규모 메타데이터 관리 시 Full-rewrite 대신 Incremental Layering 구조 검토 - 데이터 증가율에 따른 Geometric Progression 기반의 컴팩션(Compaction) 전략 수립 - 전체 데이터셋 로드 후 필터링하는 대신, 데이터 소스 단계에서 범위 제한(Range Limit) 처리 적용

원문 읽기