마이그레이션 가이드: 서브쿼리 한도

마이그레이션 가이드: 서브쿼리 한도

Druid 30.0부터 권장되는 바이트 기반 서브쿼리 크기 제한을 소개해요. 기존 행 기반 제한인 maxSubqueryRows와 새 바이트 기반 제한인 maxSubqueryBytes를 비교하고 설정 방법을 설명해요.

출처: 문서

본문

Druid는 이제 서브쿼리 크기에 바이트 기반 한도를 설정할 수 있게 해줘요. 이는 큰 서브쿼리를 처리할 때 Broker의 메모리 부족(OOM)을 방지하기 위한 것이에요. Druid는 서브쿼리를 join으로 사용할 뿐 아니라 WITH 같은 공통 테이블 표현식에서도 사용해요.

바이트 기반 서브쿼리 한도는 Druid의 행 기반 서브쿼리 한도를 재정의해요.

Druid 30.0부터 바이트 기반 한도 사용으로 전환하는 것을 권장해요.

많은 수의 행(5백만 이상)을 생성하는 쿼리의 경우, 처음부터 maxSubqueryBytes 를 사용하지 않는 것을 권장해요. maxSubqueryRows 를 늘린 다음, 쿼리 처리를 위해 Druid가 필요하다고 판단되면 바이트 기반 한도를 구성할 수 있어요.

행 기반 서브쿼리 한도

Druid는 maxSubqueryRows 속성을 사용해 서브쿼리에서 Druid가 반환하는 행 수를 제한해요. 이것은 행 기반 한도이므로, 반환 데이터의 전체 크기를 제한하지는 않아요.

maxSubqueryRows 속성은 기본적으로 100,000 으로 설정돼 있어요.

바이트 기반 서브쿼리 한도 활성화

선택 속성 maxSubqueryBytes 를 설정해 반환 바이트의 최대 수를 지정해요. 이 속성은 maxSubqueryRows 보다 우선해요.

사용 고려 사항

maxSubqueryRows 와 maxSubqueryBytes 를 모두 클러스터 레벨에서 설정하고 개별 쿼리에서 재정의할 수 있어요. 자세한 내용은 Overriding default query context values 문서를 참고해요.

서브쿼리 통계에 대한 메트릭을 Druid가 내보내도록 Broker 모니터 SubqueryCountStatsMonitor 를 활성화해야 해요. 이렇게 하려면 Broker의 runtime.properties 구성 파일의 druid.monitoring.monitors 속성에 org.apache.druid.server.metrics.SubqueryCountStatsMonitor 를 추가해요. 자세한 내용은 Metrics monitors 문서를 참고해요.

더 알아보기 (Learn more)