과제를 위한 땡김 복습 ... 앞에 순차적으로 다 이해하고 복습한 뒤에 하고 싶었는데 사람은 가끔 현실적으로(?) 살아야지?
어쩌면 내가 맨날 학교를 가기 싫고 공부하기 싫은 것이 수업을 200% 이해하지 못해서 그런 것 아닐까? 이번주 금토일에는 그동안 못 따라가던 것이나 이해 못하던 거 진짜 제대로 따라잡아보고 싶다.
*** 지금부터 정리하는 내용은 모두 Avil Silberschatz, Henry F.Kroth, S.Sudarshan의 "Database System Concepts 7th edition"이라는 교재와, 고려대학교 정순영 교수님의 2023년 1학기 "데이터베이스" 강의를 기반으로 하고 있다. 모든 강의자료 캡쳐본은 정순영 교수님께서 권한을 갖고 있다. ***
1) Query Processing이란 무엇일까?

[ 정의 ]
Query processing은 database에서 데이터를 추출하는 데 수반되는 활동의 범위를 가리킨다.
file system의 물리적인 수준에서 쓰일 수 있는 표현들로 쿼리들을 translate하는 것 / 쿼리 최적화 변환들 / 쿼리의 실질적인 평가 등의 작업 등등이 포함된다.
p689
Query processing refers to the range of activities involved in extracting data from a database.
_includes translation of queries in high-level database languages into expressions that can be used at the physical level of the file system, a variety of query-optimizing transformations, and actual evaluation of queries.
2) Query Processing의 전체적인 과정

query processing의 기본적인 과정은 세 단계로 나눌 수 있다.
1️⃣ Parsing and translation
: 본격적인 query processing이 시작되기 전에, query는 사용될 수 있는 internal한 형태로 바뀌어야 한다. SQL은 인간이 쓰기에 좋은 것이지, 시스템이 활용할 수 있는 형태는 아니므로, extended relational algebra에 기초한 표현으로 변환한다.
이러한 translation은 parser of compiler의 작업과 유사하다. 이때 parser은 사용자 query의 syntax를 확인하거나, relation name이 실제 db에 있는 것인지 확인한다.
2️⃣ Optimization
: 하나의 query도 다양한 형태의 relational-algebra expressions로 나타낼 수 있다. 또한, 각각의 relational-algebra operation도 각기 다른 알고리즘으로 실행할 수 있다. 따라서, 이후 가장 좋은 선택지를 고르기 위해서 query를 평가하려면, '어떻게 평가'해야하는지도 제시해주어야 한다.
relational-algebra expression뿐만 아니라, 특정 operation을 위해 쓰는 알고리즘은 무엇인지, 어떤 index를 쓸 것인지 명시할 수 있다. 이러한 정보들이 함께 주석처럼 달린 relational-algebra operation을 evaluation primitive라고 하며,
query를 평가하기 위해 사용될 수 있는 primitive operations의 시퀀스를 query-execution plan 또는 query-evaluation plan이라고 한다.
➡️ 각각의 evaluation plan들은 다른 cost를 가지고 있을텐데, 가장 효율적인 evaluation plan을 제시하는 것을 우리는 user가 아니라 system의 책임이라고 여긴다. 이를 query optimization이라고 한다 (minimizing the cost of query evaluation)
3️⃣ Evaluation
: query plan이 선택되고 나면, 해당 query는 그 plan을 통해 평가되며 output은 해당 query의 결과이다.
query-execution engine이 query-evaluation plan을 받아서 해당 plan을 실행하고 해당 query의 answer를 반환한다.
cf 모든 databse가 위의 단계들을 동일하게 따르는 것은 아니지만, query processing의 핵심적 개념은 다룬 것!
✨ 그런데!
query optimizer는 각 operation의 cost를 알아야한다. 실제 cost는 계산하기도 어렵고, 많은 파라미터들이 엮여있기에, 우리는 각 operation의 execution cost에 대한 대략적인 추정치(=rough estimate)을 얻을 수 있다.
결국, 이 단원에서의 핵심은 query plan의 각각의 opertions를 평가하는 방법과, 그것의 cost를 추정하는 방법을 배우는 것.
---
'CS전공강의 > 데이터베이스' 카테고리의 다른 글
데이터베이스 Chapter2: Intro to Relational Model (3회차) (0) | 2023.04.11 |
---|---|
데이터베이스 Chapter1: Introduction (2회차) (0) | 2023.04.05 |
데이터베이스 Chapter1: Introduction (1회차) (1) | 2023.03.20 |