본문 바로가기
컴퓨터 지식/데이터베이스

[DB] 데이터베이스 Evaluation / PipeLining 과 Materialization

by 서상혁 2019. 11. 30.

쿼리 실행의 단계

 

1. Parsing and Translation

2. Optimization

3. Evaluation

 

출처 : 고려대 DB 정연돈 교수님 강의


Evaluation 

- 엔진이 1,2 단계를 거친 쿼리를 보고 어떻게 실행할건지 실행 계획을 세우고 행하는 것.

 대표적으로 Pipelining 방식과 Materialization 방식이 있다.

 


 

Pipelining

한 연산의 실행이 끝나서 결과 값을 내기 전에, 다른 연산도 실행하는 방법 ( 동시에 계산 이라 생각해도 됨)

 

- Materialization 보다 저렴하다. (따로 릴레이션을 메모리에 저장할 필요가 없음)

- 정렬이나 해쉬 조인에는 적용 불가.

- demand driven 과 producer driven 으로 나뉜다.

 

demand driven(lazy driven) :

현재 상태를 중심으로 다음 연산에 필요한 것을 request 한다. (top level부터 순서대로) 버퍼 필요 x (pull 모델)

producer driven(eager driven) :

operator 사이에 버퍼가 존재해서 child 들이 알아서 버퍼에 넘겨주면 parents 는 그 것을 확인 후 처리한다. demand driven 보다 더 많은 input 을 처리 가능하다. (push 모델)

 

Materialization

출처 : 고려대 DB 정연돈 교수님 강의

이런식으로 쿼리를 조직화하여, 가장 낮은 레벨부터 차례대로 처리해나가는 방식이다. 중간중간 결과를 임시 저장공간에 저장해 다음 레벨의 단계에 전달한다.

 

- 어떤 쿼리문이든 적용 가능하다.

- 매 단계마다 메모리를 사용할 수도 있기 때문에 비용이 높은 편이다.

- 더블 버퍼링으로 실행시간을 줄인다.

 

 

 

728x90

댓글