[데이터베이스 설계]쿼리 평가 기초(Query Evaluation Basics)

2022. 10. 27. 13:21·Database design

개요

  • 쿼리 과정의 기초
  • 쿼리 과정의 기초 단계
  • 쿼리 수행 시간 계산 방법

아래 그림은 쿼리 동작 과정이다

3가지의 기초적인 단계로 나뉘는데

  • 문의 분석 그리고 해석(Parsing and Translation)
  • 최적화(Optimization)
  • 평가(Evaluation)

Parsing and Translation

쿼리를 내부의 양식으로 변환하는데, 이때 관계대수(Relational algebra)로 번역된다

Parser은 문법검사와 릴레이션을 확인한다

컴파일러와 같은 역할을 수행한다

 

Evaluation

쿼리 평가 계획은 쿼리 실행 계획이라고도 한다.

쿼리 실행 엔진은 주어진 쿼리의 출력을 생성하는 역할을 한다. 쿼리 실행 계획을 가져와서 실행하고 마지막으로 사용자 쿼리에 대한 출력을 만듭니다

많은 양의 데이터 문제는 어떻게 좋은 실행 계획을 찾아낼 것 인지에 있다

 

Optimisation

관계대수 표현은 많은 동등한 표현을 가질 수 있다

각각의 관계대수 작업은 몇몇의 알고리즘을 사용해서 실행 될 수 있다

상세한 평가 계획을 명시하는 주석이 달린 표현을 평가 계획이라고 한다

- Plan 1 : use an index on balance to find accounts with balance < 2500

- Plan 2 : perform linear scan and discard accounts with balance >= 2500

 

쿼리 최적화란?

모든 동등한 실행 계획 가운데, 가장 수행시간이 적은 하나를 고르는 것

이러한 Cost(수행 시간)은 데이터베이스 catalog(목록)으로부터 통계적 정보를 사용해서 추정된다

e.g. 각 릴레이션의 튜플 갯수, 튜플의 크기, 릴레이션의 블록(Block)의 갯수

 

쿼리 수행시간 계산방법

 

많은 구성요소가 수행시간의 영향을 미친다

e.g. 디스크 접속, CPU, 그리고 네트워크 통신

 

다음을 기준으로 비용을 측정할 수 있다

  • 응답시간 i.e. 쿼리에 답하는 경과시간 혹은
  • 총 리소스 소비량

총 리소스 소비량을 비용 측정 기준으로 사용

- 응답시간을 측정하는 것은 어렵고, 리소스를 최소화하는 것이 공유 데이터베이스에서는 좋은 생각이다

 

단순성을 위해 CPU 비용을 무시한다

실제 시스템은 CPU 비용을 고려한다
병렬 시스템에 대해 네트워크 비용을 고려해야 한다.

 

각 운영 비용을 어떻게 추정하는지 설명한다

Disk에 출력 쓰기 비용은 포함하지 않는다

 

디스크 비용 측정(Disk cost) 

  • 탐색 횟수(Number of seeks)평균 탐색 비용
  • 읽은 블록 수(Number of blocks read)평균값
  • 쓴 블록 수(Number of blocks written) 평균값

 

Time to transfer on block은 블록 전송 시간

Time for one seek은 블록 탐색 시간

cost for 'b' block transfers plus 's' seeks은 'b' 블록 전송에 대한 비용 + 's' 탐색

간단하게 나타내기 위해 아래그림과 같이 표현 할 수 있다

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)
'Database design' 카테고리의 다른 글
  • [데이터베이스 설계]웹 기술 및 데이터 저장(XML)
  • [데이터베이스 설계] 쿼리 최적화 설렉션(Query optimization selection)
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    소프트웨어 공학
    알고리즘 분석
    typescript
    java
    html
    자바스크립트
    JS
    frontend
    css
    Queues
    ChatGPT
    javascript
    자바
    화이트 박스 테스트
    미니넷
    expo
    GPT-4
    알고리즘
    티스토리챌린지
    이진트리
    heap
    오블완
    BST
    React
    generic
    데이터 구조
    prototyping
    블랙 박스 테스트
    AWS
    mininet
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
[데이터베이스 설계]쿼리 평가 기초(Query Evaluation Basics)
상단으로

티스토리툴바