DB/PostgreSQL

GPDB - motion 정의

박쿠리 2024. 9. 12. 23:11

motion

데이터베이스의 여러 세그먼트 간에 데이터를 이동시키는 작업을 나타낸다.

 

motion 종류

  1. Broadcast motion
    • 테이블의 데이터를 모든 세그먼트에 복사하는 작업이다.
    • 이 방식은 일반적으로 작은 테이블과 큰 테이블을 조인할 때 사용된다. 작은 테이블의 모든 데이터를 모든 세그먼트로 보내서 큰 테이블의 각 세그먼트에서 조인을 수행할 수 있도록 한다.
    • 주로 데이터 크기가 작고 모든 세그먼트에서 데이터를 필요로 할 때 효율적이다.
  2. Redistribute motion
    • 데이터를 지정된 분산 키에 따라 세그먼트 간에 재분배하는 작업이다.
    • 주로 조인 키가 두 테이블의 분산 키와 일치하지 않을 때 발생한다. 데이터를 조인 키 기준으로 재분배하여 동일한 세그먼트에 조인할 데이터를 모으는 역할을 한다.
    • 이 작업은 많은 네트워크 트래픽을 발생시킬 수 있으므로 성능에 큰 영향을 줄 수 있다.
  3. Gather motion
    • 모든 세그먼트에서 데이터를 모아 단일 세그먼트 또는 마스터 노드로 전송하는 작업이다.
    • 보통 쿼리의 최종 결과를 클라이언트에 반환할 때 사용된다. 여러 세그먼트에서 계산된 결과를 마스터 노드에서 수집하여 반환해야 하기 때문에 발생한다.
    • LIMIT 절이 포함된 쿼리에서 자주 발생하며, 최종 결과를 하나의 세그먼트에서만 처리해야 할 때도 사용된다.

 

해당 작업은 Explain query 할 때 확인할 수 있다.

 

Broadcast Motion

여기서 3:1은 테이블의 데이터를 모든 3개 세그먼트에 복사하여 전송하는 것을 의미한다.

Broadcast Motion 3:1  (slice2; segments: 3)  (cost=... rows=...)

 

Redistribute Motion

여기서 6:6은 세그먼트 간에 데이터를 재분배하는 과정이다. 6개의 세그먼트에서 데이터를 받아 또 다른 6개의 세그먼트로 전송한다.

각 세그먼트가 자신에게 할당된 데이터를 처리하는데, 조인 키가 같은 데이터가 동일한 세그먼트로 가도록 재분배하는 것이 핵심이다.

 

 

Redistribute Motion 6:6  (slice2; segments: 6)  (cost=... rows=...)

 

Gather Motion

여기서 6:1은 6개의 세그먼트에서 데이터를 모아 하나의 세그먼트로 전송하는 과정을 의미한다.

Gather Motion 6:1  (slice1; segments: 6)  (cost=... rows=...)

 

 

반응형

'DB > PostgreSQL' 카테고리의 다른 글

cgroup  (0) 2024.11.18
GPDB - Query Plan 예시  (0) 2024.10.01
GPDB 분산키 Randomly vs 특정 컬럼  (0) 2024.09.12
PostgreSQL 로그인 권한 - 연결 실패  (0) 2024.08.31
쿼리 튜닝용 파라미터  (0) 2024.08.24