압축 통계

압축 통계 (Compression Stats)

Pinot 테이블의 forward-index 및 dictionary 압축 커버리지를 측정해요.

출처: 문서

본문

Compression stats를 사용하면 Pinot가 압축 후 forward index와 사전에 저장하는 직렬화된 컬럼 값 데이터가 얼마나 되는지 검사할 수 있어요. 이 기능은 기본적으로 꺼져 있으며 기존 controller 테이블 크기 및 메타데이터 API를 통해 표면화돼요.

수집 활성화

테이블 구성에서 tableIndexConfig.compressionStatsEnabled을 true로 설정하세요.

{
  "tableIndexConfig": {
    "compressionStatsEnabled": true
  }
}

Pinot는 플래그가 활성화된 동안 빌드된 세그먼트 또는 재작성된 forward index에 대해서만 통계를 기록해요. 기존 세그먼트는 백필되지 않아요.

통계 조회

Controller API Examples에 문서화된 controller API를 사용하세요.

  • GET /tables/{tableName}/size는 커버된 각 offline 또는 realtime 하위 테이블에 대한 compressionStats 요약을 반환해요. includeColumnCompressionStats=true를 추가하면 columnCompressionStats를 포함해요.
  • GET /tables/{tableName}/metadata?type=OFFLINE은 offline 테이블의 집계 compressionStats 요약을 반환해요. columns=...로 메타데이터 응답 범위를 한정하고 includeColumnCompressionStats=true로 컬럼별 항목을 포함할 수 있어요.

테이블 수준 요약은 다음을 보고해요.

Field Meaning
uncompressedValueSizePerReplicaInBytes 커버된 세그먼트의 논리적 복사본 하나에 대한 추적되는 직렬화된 값 바이트
forwardIndexAndDictionaryStorageSizePerReplicaInBytes 같은 논리적 복사본에 대한 디스크 상의 forward-index 및 dictionary 바이트
compressionRatio uncompressedValueSizePerReplicaInBytes / forwardIndexAndDictionaryStorageSizePerReplicaInBytes
segmentsWithCompleteStats 완전한 통계에 기여한 논리 세그먼트 수
totalSegments 하위 테이블의 총 논리 세그먼트 수
partialCoverage 하나 이상의 논리 세그먼트가 통계에 기여하지 못했을 때 true

컬럼별 항목은 컬럼 이름, 관찰된 인덱스 유형, 집계 크기, 비율, encodingBreakdown을 나눠 보여줘요. Raw forward index는 청크 압축 유형을 보고하고, 사전 인코딩 컬럼은 forward-index와 dictionary 바이트를 합산해서 보고해요.

커버리지 주의 사항

적격한 forward-index 컬럼만 비율에 기여해요. forward index가 없는 컬럼과 지속된 값 크기 메타데이터가 없는 이전 세그먼트는 요약과 컬럼별 커버리지에서 제외돼요.

상세한 GET /tables/{tableName}/size 응답에서 Pinot는 segments.<segment>.serverInfo.<server> 아래에 세그먼트 수준 압축 필드를 붙일 때 각 논리 세그먼트에 대해 완전한 복제본 하나를 선택해요. 다른 복제본은 여전히 디스크 크기를 보고하지만 세그먼트 수준 압축 세부 사항은 보고하지 않아요.

GET /tables/{tableName}/metadata는 현재 offline 테이블만 지원해요. 롤링 업그레이드나 혼합된 이전/새 세그먼트 집단 동안 Pinot가 커버된 모든 논리 세그먼트에 대한 통계를 읽을 수 있을 때까지 partialCoverage는 true로 유지돼요.

Controller 게이지

테이블에 대한 압축 통계가 사용 가능하면 lead controller는 다음 게이지를 내보내요.

Gauge Unit
tableCompressionStatsRatioPercent Percent
tableCompressionStatsUncompressedValueSizePerReplica Bytes
tableCompressionStatsForwardIndexAndDictionaryStorageSizePerReplica Bytes

이 게이지는 수집이 비활성화되거나 커버된 세그먼트가 남지 않으면 제거돼요.

더 알아보기 (Learn more)