728x90

# 질의 처리
- 데이터베이스로부터 데이터를 가져오는 것과 관련된 일련의 작업

 


# 질의 처리 구성
- 고수준의 데이터베이스 언어로 기술된 질의를 파일 시스템의 물리적 단계 언어로 변환 +
- 질의 최적화를 위한 다양한 변환 +
- 질의의 결과를 평가 evaluation (실행 execution)

 

 

# 질의처리 기본 단계

1. 파싱과 변환
2. 최적화(Optimization)
3. 평가(Evaluation)

- query : SQL

 

 

# 파싱과 변환 (parser and translator)
- 주어진 질의를 시스템 내부 표현 형태로 변환
- 파서는 SQL의 문법과 접근 테이블의 적절성을 검사
- 그 결과를 파스 트리 형태 구성
- 파스 트리를 관계 대수 형식으로 변환 (SQL을 관계 대수 연산식으로)
- 문법은 사람이 쓰기에 추상화되어있음
- metaData(DataDictionary, SystemCatalog) 보고 체크

 


# 관계대수연산식 (relational-algebra expression)
- 한 개의 SQL에 따라 여러 개의 관계 대수 연산식 뽑음
- 관계대수연산식에 따라 여러 개의 비용

 


# 최적화 (optimizer)
- 가장 비용 적은 것 선택
- DataDictionary(statistics about data) 보고 예측(각 테이블의 레코드 개수, 레코드 크기)
- DBMS가 처리
- 여러 동일한 평가계획들 가운데 최소 비용인 것을 선택
- 질의를 최적화하기 위하여 질의 최적기(Query Optimizer)는 각 연산의 비용을 알아야 함
- 비용을 정확하게 산출하는 것은 불가능
- 대강의 비용을 추정하는 것은 가능  충분히 현실적

 


# 평가 (evaluation) == 실행
- 질의처리 엔진은 질의 평가 계획을 입력으로 받아 해당 계획을 실행한 후 그 결과를 반환

 


# 질의처리 기본 단계
- 동일한 SQL 문을 여러 형태의 관계 대수식으로 표현할 수 있음
- select salary from instructor where salary < 75000 

- 관계 대수식의 각 연산은 여러 가지 알고리즘들 가운데 하나를 통하여 수행
1. Selection 연산을 구현할 때 75000보다 작은 레코드를 찾기 위하여 instructor 테이블의 모든 레코드를 찾도록 구현
2. B+ 트리 인덱스가 salary에 대하여 구축되어 있을 경우 instructor 테이블을 접근하는 대신 B+ 트리 인덱스를 통하여 결과를 얻는 것으로 구현

 

 

# 질의수행 계획(질의 평가 계획)
- 관계 대수식만으로 SQL을 처리할 수는 없음
- 관계 대수식 내의 각 연산을 어떻게 처리할 것인지에 대한 주석(Annotation)이 필요함
- 특정 연산 수행을 위한 알고리즘, 사용할 특정 인덱스 등
- 질의처리를 위한 일련의 평가 기본단위들

 


# 평가(실행) 기본단위(Evaluation Primitive)
- 주석이 달려있는 관계 대수식 표현

 


# 질의 수행 엔진(Query Execution Engine)
- 질의 수행계획을 받아들여 이를 수행한 후 결과를 도출함

 


# 질의 비용 측정
- 하나의 질의에는 다수의 가능한 평가계획들이 존재 
- 추정된 비용 관점에서 대안들을 비교하여 보고 최선의 선택을 하는 것이 중요
- 개개의 연산들에 대한 비용을 추정 
- 질의 평가계획의 비용을 파악하기 위해 이들을 결합

 

반응형

'전공 공부 > 데이터베이스시스템' 카테고리의 다른 글

정렬  (0) 2021.01.08
디스크 접근 비용  (0) 2021.01.08
확장성 해싱(동적 해싱)  (0) 2021.01.06
해싱  (0) 2021.01.06
B+ 트리 갱신  (0) 2021.01.06
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기