Upsert 압축 작업
Upsert 압축 작업 (Upsert Compaction Task)
Minion의 Upsert 압축(Upsert Compaction) 작업으로 upsert 테이블의 무효 레코드를 물리적으로 제거하는 방법을 안내해요.
출처: 문서
본문
개요 (Overview)
upsert 테이블에서는 시간이 지나면서 완료된 세그먼트 안에 오래된(무효화된) 행 버전이 쌓여요. 이 무효 레코드는 저장 공간을 낭비하고 전체 테이블 스캔을 느리게 해요. Upsert Compaction 작업은 세그먼트를 다시 써서 무효 레코드를 물리적으로 제거해요.
동작 방식 (How it works)
Minion이 완료된 세그먼트에서 무효(스테일) 레코드를 제거하는 방식으로 세그먼트를 재작성해요. 최신 버전의 행만 남기므로 저장 공간과 쿼리 성능이 개선돼요.
구성 (Configuration)
테이블 구성의 task 섹션에서 작업을 예약할 수 있어요:
"task": {
"taskTypeConfigsMap": {
"UpsertCompactionTask": {
"schedule": "0 0 2 * * ?",
"invalidRecordsThresholdPercent": "30",
"invalidRecordsThresholdCount": "100000"
}
}
}
invalidRecordsThresholdPercent— 무효 레코드 비율이 이 값을 넘으면 압축을 수행해요.invalidRecordsThresholdCount— 무효 레코드 수가 이 값을 넘으면 압축을 수행해요.
모범 사례 (Best practices)
- 무효 레코드 비율을 모니터링해 30% 안팎을 넘으면 압축을 예약하세요.
- 업데이트가 빈번한 테이블일수록 압축을 더 자주 실행하세요.