File tree 1 file changed +17
-1
lines changed
1 file changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -217,5 +217,21 @@ SpillPartition::createReader();
217
217
- 재귀 스필을 지원하기 위해 파티션 비트를 우 시프트한다. 비트는 파티션 번호를 계산하는데 사용된다.
218
218
219
219
### Hash Build
220
+ 1. 빌드 입력 소스나 이전에 스필된 데이터를 처리
221
+ 2. 새 빌드 입력을 위한 메모리 예약. 메모리 제한을 초과하면 스필 연산자 그룹에 스필을 요청
222
+ 3. 그룹 스필 요청이 있는지 확인한다. 이 연산자가 스필 제한에 도달한 마지막 연산자이면 그룹 스필을 수행한다.
223
+ 4. 스필 파티션이 있다면 연관된 입력 로우를 로우 컨테이너에 버퍼하지 않고 직접 스필한다.
224
+ 5. 스필되지 않은 입력 로우를 로우 컨테이너에 저장한다. 이후 해시 테이블 빌드에 사용.
225
+ 6. 모든 연산자가 빌드 입력을 처리하면 마지막에 끝난 연산자가 해시 테이블을 생성하고 해시 조인 브릿지를 통해 테이블을 프로브 연산자에 전달한다.
226
+ 7. 복구할 스필 데이터가 있다면 다음 해시 테이블을 빌드하기 위해 스필 입력을 기다린다. 없다면 빌드 연산자는 종료한다. 프로브 연산자는 조인 연산이 끝난 뒤 스필 복구할 파티션을 선택한다.
227
+ 8. 해시 조인 브릿지에서 스필 입력을 받은 다음 빌드 연산자는 파티션 비트를 시프트한다.
228
+ 9. 1번 단계로 돌아가 다음 해시 테이블을 빌드한다.
229
+
220
230
### Hash Probe
221
- ### HashJoinBridge
231
+ 1. 해시 조인 브릿지에서 다음 해시 테이블이 조인될때까지 기다린다.
232
+ 2. 프로브 입력을 읽는 reader를 생성한다.
233
+ 3. 프로브 입력 또는 이전에 스필된 프로브 입력을 처리한다.
234
+ 4. 빌드 측에서 스필된 파티션이 있다면 연관된 입력 로우를 스필한다.
235
+ 5. 스필되지 않은 프로브 입력을 해시 테이블과 조인하여 결과를 출력한다.
236
+ 6. 모든 연산자 입력을 처리한 뒤, 복구할 스필 데이터가 없다면 모든 해시 프로브 연산자는 종료한다. 있다면 마지막으로 끝난 연산자가 브릿지에 처리 완료를 알린다. 브릿지는 다음 스필 파티션을 선택하여 복구하고 빌드 연산자를 깨운다.
237
+ 7. 1번 단계로 돌아가 다음 조인 처리를 수행한다.
You can’t perform that action at this time.
0 commit comments