2016-07-05 4 views

답변

0

Apache Hawq에서 가상 세그먼트는 실행 프로그램의 컨테이너로 사용됩니다. 결과적으로, u 리에서 사용되는 메모리는 가상 세그먼트 수로 제어됩니다. GUC hawq_rm_memory_limit_perseg을 사용하여 각 호스트 (세그먼트 인스턴스)의 전체 메모리 크기를 제어하고 가상 세그먼트의 메모리 크기를 제어 할 수 있습니다. 각 컨테이너에 대해 지정된 memsize (기본값 : 256M)로 사용자가 직접 리 큐어를 만들 수 있습니다.

0

가상 세그먼트 메모리 사용은 모든 포크 된 QE의 총 메모리를 계산하는 hawq_rm_stmt_vseg_memory에 의해 설정됩니다. 서로 다른 쿼리 문이 동일한 vseg에있을 수 있으므로 hawq_rm_stmt_vseg_memory는 서로 다른 쿼리에서 공유됩니다.

+0

그러나 hawq 코드의 주석을 보았습니다. "hawq_rm_stmt_vseg_memory"는 "하나의 명령문에 대한 하나의 가상 세그먼트의 메모리 할당량"을 참조합니다. 서로 다른 쿼리에서 공유됩니까? 그리고 "hawq_rm_stmt_vseg_memory * 세그먼트 당 총 vitrual 세그먼트 수 * 총 쿼리 문"은 "hawq_rm_memory_limit_perseg"보다 크지 않아야합니까? –

+0

전 hawq_rm_stmt_vseg_memory는 모든 명령문에 대해 하나의 vseg의 메모리 할당량을 의미한다고 생각합니다. 기본적으로 256M입니다. 이론 상으로는, hawq_rm_stmt_vseg_memory * 세그먼트의 각 세그먼트는 hawq_rm_memory_limit_perseg보다 커야합니다. 다른 사람들이 이것을 확인할 수 있습니까? – ztao1987

0

hawq_rm_stmt_vseg_memory는 가상 세그먼트 하나의 메모리 할당량 (크기)이며 기본값은 128MB입니다. 즉, 하나의 가상 세그먼트의 메모리 크기는 128MB이며 하나의 쿼리는 많은 가상 세그먼트를 요청할 수 있습니다.

0

@Wen Lin, "하나의 쿼리가 많은 가상 세그먼트를 요청할 수 있습니다"라고 언급 했으므로 하나의 가상 세그먼트도 많은 쿼리에서 공유됩니다. 맞습니까? 그러면 모든 공유 쿼리가 기본적으로 128MB의 메모리 할당량을 공유하게됩니까?

0

@ztao, 가상 세그먼트는 쿼리에 의해 공유되지 않습니다. 하나의 쿼리의 경우 RM에서 가상 세그먼트를 요청하고 완료되면 가상 세그먼트를 RM에 반환합니다.

관련 문제