홈으로 돌아가기

병렬 청크 병합 Manticore Search

Manticore Search 24.4.0에서 병렬 청크 병합으로 RT 테이블 압축 가속화. 벤치마크에서 컬럼형 저장소 최대 6.8배 향상. parallel_chunk_merges 및 merge_chunks_per_job 설정으로 벌크 삽입 후 최적화 시간 최소화.

Manticore Search의 병렬 압축: 6.8배 가속화
Advertisement 728x90

Manticore Search 24.4.0에서 RT 테이블 병렬 청크 병합

Manticore Search 24.4.0에서 RT 테이블 압축이 이제 병렬로 실행됩니다. 디스크 청크 병합이 동시에 시작되며, 각 작업은 2개 이상의 청크를 결합할 수 있습니다. 주요 매개변수: parallel_chunk_merges는 병렬 병합 작업 수를 제어하고, merge_chunks_per_job는 작업당 청크 수를 설정합니다. OPTIMIZE 명령은 N-way 병합을 지원하는 백그라운드 워커 풀을 활용합니다.

이 기능은 지속적인 데이터 로드에서 낮은 optimize_cutoff로 인한 압축 지연 문제를 해결합니다. 테이블은 삽입 직후 검색 가능하지만, 목표 청크 수로의 완전 최적화는 이전에 수 분이 걸렸습니다.

1천만 문서 벤치마크

id bigint, name text (10–100단어), type int, optimize_cutoff='16' 필드를 가진 RT 테이블로 테스트했습니다. Manticore Load Emulator를 사용한 로딩:

Google AdInline article slot
manticore-load \
  --cache-gen-workers=5 \
  --drop \
  --batch-size=1000 \
  --threads=5 \
  --total=10000000 \
  --init="CREATE TABLE test(id bigint, name text, type int) optimize_cutoff='16'" \
  --load="INSERT INTO test(id,name,type) VALUES(<increment>,'<text/10/100>',<int/1/100>)" \
  --wait

기존 모드 (parallel_chunk_merges=1, merge_chunks_per_job=2):

  • 1천만 문서 로딩: 1:18.
  • 완전 압축: 3:23.
  • 1:18 시점: 53개 청크.

신규 모드 (parallel_chunk_merges=3, merge_chunks_per_job=5):

  • 로딩: 1:18.
  • 완전 압축: 1:31.
  • 1:18 시점: 23개 청크.

성과: 총 시간 55% 단축, 병합 꼬리 지연 90% 감소.

Google AdInline article slot

저장 방식 비교

| 저장 방식 | 최적 설정 | 시간 | 최악 설정 | 시간 | 개선 배율 |

|-----------|-----------------------------------|-------|--------------------------------|--------|-----------|

| 행 지향 | parallel_chunk_merges=4, merge_chunks_per_job=5 | 14:35 | parallel_chunk_merges=1, merge_chunks_per_job=2 | 67:15 | 4.61배 |

Google AdInline article slot

| 열 지향 | parallel_chunk_merges=4, merge_chunks_per_job=5 | 15:10 | parallel_chunk_merges=1, merge_chunks_per_job=2 | 99:14 | 6.80배 |

최적 값: parallel_chunk_merges=4–5, merge_chunks_per_job=4–5. 신규 기본값으로 동일 1천만 문서 기준 1:57.

주요 튜닝 요소:

  • 낮은 merge_chunks_per_job는 더 많은 병렬 작업 가능.
  • 높은 값은 개별 병합 속도 향상하나 병렬성 제한.
  • I/O와 작업 부하에 따라 균형 조정.

매개변수 균형

parallel_chunk_merges는 여러 작업을 동시에 시작합니다. merge_chunks_per_job는 작업당 부하를 결정합니다. 청크가 많을 때 가벼운 작업(낮은 merge_chunks_per_job)은 병렬성을 높여 자원 효율화. 무거운 작업은 단계 줄이지만 워커 풀 독점.

벤치마크 결과 양 매개변수 3–5로 설정 시 시간 최소화. 벌크 삽입 RT 작업에서 최적화 대기 시간 대폭 단축, 삽입 속도 영향 없음.

주요 요약:

  • 데이터 즉시 검색 가능; 압축은 백그라운드 실행.
  • 병렬 병합으로 꼬리 지연 90% 감소 (2:05 → 0:13).
  • 열 지향 저장에서 최대 6.8배 속도 향상.
  • 신규 기본값 기존 모드比 40% 빠름.
  • 로딩 중 청크 수 감소 (23 vs 53).

튜닝 권장사항

  • Manticore Search 24.4.0 기본값부터 시작.
  • 로딩 중 청크 수와 I/O 모니터링.
  • 여유 CPU 시 parallel_chunk_merges 4–5로 증가.
  • 대형 RT 테이블에서 merge_chunks_per_job=4–5 테스트.
  • 배치 후 OPTIMIZE로 강제 압축.

낮은 optimize_cutoff의 연속 삽입 스트림에서 테이블 안정성 유지, 장기 백그라운드 작업 없음.

— Editorial Team

Advertisement 728x90

다음 읽기