제 13 장 질의 처리와 최적화를 위한 알고리즘 Fundamentals of Database Systems

Slides:



Advertisements
Similar presentations
13 강 논리회로 2 과목 전자계산기 구조 강사 이 민 욱. 13 강 논리회로  논리회로 1. 부울 대수 (Boolean Algebra) 에서 사용하는 기본 연산자 ① 논리부정 : NOT ( ` ) 논리부정은 F = NOT A 의 표현을 F =A` 로 표현 ② 논리곱.
Advertisements

제 4 장 관계 데이타 모델과 관계 데이타베이스 제약조건
알고리즘 기본 개념 정렬 알고리즘 탐색 알고리즘 알고리즘 복잡도.
컴퓨터와 인터넷.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
Chapter 5 SQL: 확장된 질의, 주장, 트리거, 뷰.
연결리스트(linked list).
SQL: 데이터 정의, 제약사항, 기본 질의와 갱신
SQL-99: 스키마 정의, 기본제약조건, 질의어 충북대학교 구조시스템공학과 시스템공학연구실
컴퓨터 프로그래밍 기초 [Final] 기말고사
8장. 뷰와 시스템 카탈로그 뷰와 시스템 카탈로그 관계 데이터베이스 시스템의 뷰(view)는 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름 뷰는 관계 데이터베이스 시스템에서 데이터베이스의.
8장 서브 쿼리.
질의처리 최적화 충북대학교 정보통신공학부 복경수
6 장. ER-관계 사상에 의한 관계 데이터베이스 설계
6장 그룹 함수.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
11.텍스트를 위한 화일.
Error Detection and Correction
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어 어느것을 기본으로 만들것인가
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
관계 대수.
5장. 관계대수와 관계 해석 관계 대수 릴레이션들을 다루는 연산들의 집합 검색 요구(질의)를 기술하는 데에 사용
질의처리(Query Processing)와 최적화(Optimization)
1. 관계 데이터 언어 관계 대수 1) 관계대수 정의 ① 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 인 방법 ② 주어진 관계로 부터 원하는 관계를 얻기 위해 연산자와 연산 규칙을 제공하는 언어 ③ 릴레이션 조작을 위한 연산의 집합으로 피연산자와 결과가.

자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
제7장 SQL-99: 스키마 정의, 제약조건, 질의어, 뷰
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
8장. 상호 배타적 집합의 처리.
ER-관계 사상에 의한 관계 데이터베이스 설계
데이터베이스 (Database) SQL-99: 스키마 정의, 기본 제약조건, 질의어 문양세 강원대학교 IT대학 컴퓨터과학전공.
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
제 9장 트랜스레이터.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
Chapter 03. 관계 데이터베이스 설계.
합집합과 교집합이란 무엇인가? 01 합집합 두 집합 A, B에 대하여 A에 속하거나 B에 속하는 모든 원소로 이루어진 집합을 A와 B의 합집합이라고 하며, 기호 A∪B로 나타낸다. A∪B ={x | x∈A 또는 x∈B}
CHAP 21. 전화, SMS, 주소록.
VHDL를 이용한 DES 설계 정보통신컴퓨터공학부 5조 김인옥, 백미숙
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
문성우 SQL 실습 Part Ⅰ 문성우.
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
제 8 장 ER-관계 사상에 의한 관계 데이타베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
Chapter 10 데이터 검색1.
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
ER-관계 사상에 의한 관계데이터베이스 설계 충북대학교 구조시스템공학과 시스템공학연구실
Numerical Analysis Programming using NRs
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
제 4 장 Record.
07. DB 설계 명지대학교 ICT 융합대학 김정호.
Chapter 2: Intro to Relational Model
9장. spss statistics 20의 데이터 변수계산
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
ER-관계 사상에 의한 관계 데이터베이스 설계
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
C++ Espresso 제15장 STL 알고리즘.
6 객체.
Presentation transcript:

제 13 장 질의 처리와 최적화를 위한 알고리즘 Fundamentals of Database Systems 제 13 장 질의 처리와 최적화를 위한 알고리즘 Fundamentals of Database Systems R. A. Elmasri and S. B. Navathe Copyright© 2004 황규영 홍의경 음두헌 박영철 김진호 조완섭

Fundamentals of Database Systems 목 차 13.1 SQL 질의를 관계대수로 번역 13.2 외부 정렬 알고리즘 13.3 실렉트와 조인 연산을 위한 알고리즘 13.4 프로젝트와 집합 연산을 위한 알고리즘 13.5 집계 연산과 외부 조인의 구현 13.6 파이프라이닝을 사용한 연산의 결합 13.7 경험을 사용한 질의 최적화 13.8 질의 최적화에서 선택률과 비용 추정치 사용 13.9 오라클의 질의 최적화의 개요 13.10 의미적 질의 최적화 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 개 요 어휘 분석, 구문 분석, 검증 고수준 언어로 표현된 질의 질의를 중간 형태로 표현 실행 계획 질의를 실행하기 위한 코드 질의 결과 질의 최적화 질의 코드 생성기 런타임 데이타베이스 처리기 코드는 직접 실행되거나 (인터프리터 방식), 저장된 뒤 필요할 때마다 실행될 수 있음 (컴파일 방식) [그림 13.1] 고수준의 질의를 처리하는 과정 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.1 SQL 질의를 관계대수로 번역 SQL 질의를 최적화 하기 위한 준비 단계 예제 SQL 질의 SELECT LNAME,FNAME FROM EMPLOYEE WHERE SALARY > (SELECT MAX(SALARY) FROM EMPLOYEE WHERE DNO = 5); (2) 질의 블록들로 분해: 외부블록 : SELECT LNAME,FNAME FROM EMPLOYEE WHERE SALARY > C 내부블록: SELECT MAX(SALARY) FROM EMPLOYEE WHERE DNO = 5 (3) 관계대수로 번역: 외부블록:πLNAME, FNAME(σSALARY>C(EMPLOYEE)) 내부블록:  MAX SALARY (σDNO=5(EMPLOYEE) // 확장된 관계대수식 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.2 외부 정렬 필요성 ORDER BY 절, SELECT 절의 DISTINCT, 조인 연산, 집합 연산의 처리에서 사용됨 합병정렬( Mergesort)알고리즘 정렬 단계 Read RUN; Sort; Write RUN 합병 단계 4-way 합병 (4개의 RUN들을 합병하여 하나의 RUN을 생성) 하나의 RUN으로 될 때 까지 합병을 반복 수행함 블록접근 회수 : Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.3 실렉트와 조인 연산을 위한 알고리즘 13.3.1 실렉트 연산의 구현 13.3.2 조인 연산의 구현 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.3.1 실렉트 연산의 구현 단순 선택을 위한 검색 방법 화일 스캔 S1. 선형 탐색(linear search) S2. 이진 탐색(binary search) : 순서 키에 대해 동등 비교시 인덱스 스캔 S3. 기본 인덱스나 해시 키를 사용하여 단일 레코드를 검색 S4. 기본 인덱스를 사용하여 여러개의 레코드들을 검색 . 기본 키에 대한 범위 검색시 S5. 클러스터링 인덱스를 사용하여 여러개의 레코드들을 검색 S6. 보조(B+-트리) 인텍스를 사용 . 인덱싱 필드가 키이면 하나의 레코드 탐색 . 인덱싱 필드가 키가 아니면 여러 레코드 탐색 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.3.1 실렉트 연산의 구현 (cont.) 복합 선택을 위한 검색 방법 논리곱 조건인 경우 : 인덱스를 이용하여 레코드 포인터들을 구하고 이들을 통해 레코드들을 읽어서 다른 조건들을 비교함 S7. 개별 인덱스를 사용하는 논리곱 선택(conjunctive selection) S8. 복합 인덱스를 사용하는 논리곱 선택 S9. 보조 인덱스를 사용하여 레코드 포인터들의 교집합에 의한 논리곱 선택 % 선택률(조건을 만족하는 투플수를 릴레이션의 전체 투플수로 나눈 값)에 따라 인덱스를 선택함. 논리합 조건인 경우 : 각 조건을 만족하는 레코드들의 합집합 방법 1. 단순 조건들 중 어느 하나라도 접근경로를 가지지 않으면 선형 탐색 방법을 사용할 수 밖에 없음 방법 2. 각 조건을 만족하는 레코드 포인터들의 합집합을 구하여 레코드들을 읽음 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.3.2 조인 연산의 구현 J1 : 중첩 루프 조인(nested loop join 또는 inner-outer loop join) R(외부 루프)의 각 레코드에 대해 S(내부 루프)의 모든 레코드를 검색하고, 두 레코드가 조인조건을 만족하는가를 테스트한다. J2 : 단일 루프 조인(single loop join) R에 있는 각 레코드에 대해, 인덱스를 사용하여 S의 레코드들 중에서 조인 조건을 만족하는 모든 레코드들을 검색한다. Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.3.2 조인 연산의 구현 (cont.) J3 : 정렬-합병 조인(sort-merge) R과 S의 모든 레코드들을 조인 애트리뷰트를 기반으로 정렬한 후, R과 S의 화일 블록들의 쌍을 순서대로 읽어서 조인 조건을 테스트한다. J4: 해시조인(hash join) 분할단계 : R의 레코드들을 해시 화일 버켓들로 해시한다. 조사단계: S의 각 레코드를 해시하여 동일한 해시주소를 갖는 각 버켓에 속하는 R과 S의 레코드들이 조인조건을 만족하면 결합한다 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.4 프로젝트와 집합 연산의 구현 ∏<attribute list> (R) <attribute list>가 R의 키를 포함할 경우 <attribute list>가 R의 키를 포함하지 않을 경우 연산의 결과를 정렬한 다음 중복된 투플을 제거 또는 해싱을 이용하여 중복 제거 합집합, 교집합, 차집합 : 합집합 호환성 릴레이션들에만 적용 동일한 애트리뷰트들에 대해 두 릴레이션들을 정렬 후 각 릴레이션을 한번 조사하는 것으로 결과를 산출 한 릴레이션을 해싱한 후 다른 릴레이션의 투플을 해싱하여 집한 연산 구현 카티션 프로덕트(R X S) 구현 비용이 비싸므로 질의 최적화 동안 연산을 피하고 동등한 연산으로 대치 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.5 집계 연산과 외부 조인의 구현 집계 연산자 : MIN, MAX, COUNT, AVERAGE, SUM SELECT MAX(SALARY) FROM EMPLOYEE; SALARY에 대하여 인덱스가 있는 경우 : 그 인덱스에서 가장 큰 값을 탐색 SALARY에 대해 인덱스가 없는 경우 : 화일 스캔을 해야 함 count, average, sum 연산 : 밀집 인덱스가 있는 경우 인덱스에서 처리 SELECT DNO, AVG(SALARY) FROM EMPLOYEE GROUP BY DNO; 정렬하거나 해슁을 이용하여 투플들을 각 그룹으로 분할하여 그룹들을 생성한 후, 각 그룹에서 집계함 그룹 애트리뷰트에 클러스터링 인덱스가 존재할 경우, 분할 단계 필요 없음 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.5 집계 연산과 외부 조인의 구현(cont) 외부 조인 조인에 참여하지 않는 투플은 상대방 투플을 널로 채워서 조인함 방법1 : 내부 조인 알고리즘을 수정하여 구현 방법2 : 관계 대수 연산자들의 조합을 통하여 구현 효율성 낮음 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.6 파이프라이닝을 사용한 연산의 결합 이 기법은 질의 처리 도중에 생성되는 임시 결과 화일의 수를 줄이는 것이 목적임 하나의 연산의 결과를 임시 화일에 저장하는 대신에 다음 연산의 입력으로 사용하는 것이 파이프라이닝의 기본 아이디어임 예: Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7 경험을 사용한 질의 최적화 성능 향상을 위한 경험적 규칙들 예: 조인을 수행하기 전에 실렉트나 프로젝트 연산을 수행한다. 경험적 규칙들의 적용대상 질의에 대하여 파서가 생성한 초기 내부 표현 : 질의 트리 또는 질의 그래프 질의 트리 : 관계대수 혹은 확장된 관계대수식을 표현하는데 사용 질의그래프: 관계해석식을 표현하는데 사용 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.1 질의 트리와 질의 그래프의 표시법 질의 트리 : 관계대수식의 내부 표현 질의트리의 구조 리프노드 : 질의의 입력 릴레이션들 내부노드 : 관계대수 연산들 질의 트리의 실행 트리는 질의에 포함된 연산들의 처리 순서를 나타낸다. 내부노드의 연산에 대해 피연산자가 사용 가능할 때마다 그 연산을 실행하고, 그 연산의 결과로 생성된 릴레이션으로 그 내부노드를 대치한다. 루트노드가 실행되어 질의에 대한 최종 결과 릴레이션이 생성되면 실행이 끝난다. Ch13 Fundamentals of Database Systems

13.7.1 질의 트리와 질의 그래프의 표시법 (cont.) 질의 그래프 : 관계해석식을 표현하는 자료구조 질의그래프의 구조 릴레이션 노드 : 질의의 입력 릴레이션들  한겹 원으로 표시 상수 노드 : 질의의 상수값들  이중 원으로 표시 그래프 에지 : 실렉션과 조인 조건들 각 릴레이션으로 부터 검색할 애트리뷰트들 : 꺽쇠 기호안에 표시 질의그래프의 실행 질의를 실행하기 위한 연산들의 특정 순서를 나타내지 않는다. 각 질의에 대응되는 질의그래프는 유일하다. Ch13 Fundamentals of Database Systems

13.7.1 질의 트리와 질의 그래프의 표시법(cont.) 관계 대수 표현 SQL 표현 SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION=‘Stafford’ ∏ PNUMBER, DNUM,LNAME,ADDRESS,BDATE(((σ PLOCATION=‘Stafford’(PROJECT)) DNUM=DNUMBER(DEPARTMENT)) MGRSSN = SSN(EMPLOYEE)) Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems ∏ PNUMBER, DNUM,LNAME,ADDRESS,BDATE MGRSSN = SSN EMPLOYEE DNUM=DNUMBER DEPARTMENT σPLOCATION=‘Stafford’ PROJECT (a) [그림 16.3] 질의 Q2에 대한 두 개의 질의트리 (a) Q2의 관계대수식에 대응되는 질의 트리 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems ∏ PNUMBER, DNUM,LNAME,ADDRESS,BDATE σDNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION=‘Stafford’ EMPLOYEE DEPARTMENT PROJECT X [그림 16.4] 질의 Q2에 대한 두 개의 질의트리 (cont.) (b) Q2의 SQL 질의에 대한 초기 (규준) 질의 트리 (b) Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems P [그림 16.4] (c) Q2의 SQL 질의에 대한 질의 그래프 (c) ‘Stafford’ [P.PNUMBER,P.DNUM] D.MGRSSN=E.SSN [E.LNAME,E.ADDRESS,E.BDATE] P.PLOCATION=‘Stafford’ P.DNUM=D.NUMBER Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화 질의 Q SELECT LNAME FROM EMPLOYEE, WORKS_ON, PROJECT WHERE PNAME = ‘Aquarius’ AND PNUMBER = PNO AND ESSN = SSN AND BDATE > ‘1957-12-31’; Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화(2) ∏ LNAME σPNAME=‘Aquarius’ AND PNUMBER=PNO AND ESSN=SSN AND BDATE>’1957-12-31’ PROJECT WORKS_ON X [그림 16.5] 경험적 최적화 과정에서 질의 트리를 변경하는 과정 (a) SQL 질의 Q에 대한 초기 (규준) 질의트리. (a) EMPLOYEE Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화(3) ∏ LNAME σPNUMBER=PNO PROJECT WORKS_ON X [그림 16.5] 경험적 최적화 과정에서 질의 트리를 변경하는 과정 (b) 실렉트 연산들을 질의트리의 아래로 이동. (b) EMPLOYEE σPNAME=‘Aquarius’ σESSN=SSN σBDATE>’1957-12-31’ Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화(4) ∏ LNAME σPNUMBER=PNO WORKS_ON X [그림 16.5] 경험적 최적화 과정에서 질의 트리를 변경하는 과정 (c) 보다 제한적인 실렉트 연산을 먼저 적용. (c) EMPLOYEE σBDATE>’1957-12-31’ σESSN=SSN σPNAME=‘Aquarius’ PROJECT Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화(5) ∏ LNAME PNUMBER=PNO WORKS_ON [그림 16.5] 경험적 최적화 과정에서 질의 트리를 변경하는 과정 (d) 카티션 프로덕트와 실렉트를 조인 연산으로 대체. (d) EMPLOYEE σBDATE>’1957-12-31’ σPNAME=‘Aquarius’ PROJECT ESSN = SSN Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화 ∏ ESSN PNUMBER=PNO WORKS_ON (e) EMPLOYEE σBDATE>’1957-12-31’ σPNAME=‘Aquarius’ PROJECT ESSN = SSN ∏ LNAME ∏ SSN,LNAME ∏ PNUMBER ∏ ESSN,PNO [그림 16.5] 경험적 최적화 과정에서 질의 트리를 변경하는 과정 (e) 프로젝트 연산들을 질의트리의 아래로 이동. Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 질의트리의 경험적 최적화 관계 대수 연산들을 위한 일반적인 변환 규칙 규칙 1. 연속적인 σ σc1 AND c2 AND...AND cn(R) ≡ σc1(σc2(...(σcn(R))...)) 규칙 2. σ의 교환법칙 σc1(σc2(R)) ≡ σc2(σc1(R)) 규칙 3. 연속적인 ∏ ∏List1(∏List2(...(∏Listn(R))...)) ≡ ∏List1(R) 규칙 4. σ와 ∏의 교환 ∏A1,A2,...,An(σc(R)) ≡ σc(∏A1,A2,...,An(R)) 규칙 5. (혹은 X)의 교환법칙 R cS ≡ S cR 규칙 6. σ와 (혹은 X)의 교환 σc(R S) ≡ (σc(R)) S Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 경험을 사용한 질의 최적화(cont.) 규칙 7. ∏와 (혹은 X)의 교환 ∏L(R cS) ≡ (∏A1,...,An(R)) c(∏B1,...,Bm(S)) 규칙 8. 집합연산의 교환법칙 ∪와 ∩사이에는 교환법칙이 성립한다. 그러나 연산에는 교환법칙이 성립하지 않는다. 규칙 9. , X, ∪, ∩의 결합법칙 (R Θ S) Θ T ≡ R Θ (S Θ T) 규칙 10. σ와 집합연산의 교환 ∪, ∩, - 와 σ 는 교환 가능하다. 규칙 11. ∏와 ∪의 교환 ∏L(R U S) ≡ (∏L(R)) U (∏L(S)) 규칙 12. 일련의 (σ, ×) 연산을 로 변환 σc(R X S ) ≡ (R c S) 그 밖의 다른 변환들 - 드모르강의 법칙 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.2 경험을 사용한 질의 최적화(cont.) 경험적 대수 최적화 알고리즘의 개요 논리곱 조건을 가진 실렉트 연산을 개개의 실렉트 연산들의 연속으로 분리 (규칙 1 사용) 실렉트 연산을 질의트리의 가장 아래로 이동 (규칙 2, 4, 6, 10 사용) 가장 제한적인 실렉트 연산들을 가진 리프노드 릴레이션들이 가장 먼저 실행되게 재배치함 (규칙 5, 9 사용) 카티션 프로덕트 연산을 후속 실렉트 연산과 결합하여 조인연산으로 변환 프로젝트 연산의 애트리뷰트들의 리스트를 나눠서 가능한 한 트리의 아래로 이동 (규칙 3, 4, 7, 11 사용) 단일 알고리즘에 의해 독립적으로 실행될 수 있는 연산들의 그룹을 나타내는 서브트리들을 식별함 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.7.3 질의트리를 질의 실행계획으로 변경 ∏ FNAME,LNAME,ADDRESS DNUMBER=DNO σDNAME=‘Research’ EMPLOYEE DEPARTMENT [그림 16.6] 질의 Q1에 대한 질의트리 최적화기의 실행계획: (1) 실렉트 연산 : 인덱스 스캔, (2) EMPLOYEE : 테이블 스캔, (3) 조인 연산 : 중첩 루프 조인, (4) 프로젝트 : 조인 결과를 스캔 (5) 질의 실행방법 : 구체화 평가방법 / 파이프라인 평가방법 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8 질의 최적화에서 선택률과 비용추정치 사용 13.8.1 질의 실행을 위한 비용의 구성요소 13.8.2 비용함수에서 사용되는 카탈로그 정보 13.8.3 실렉트에 대한 비용함수의 예 13.8.4 조인에 대한 비용함수의 예 13.8.5 다중 릴레이션 질의와 조인 순서화 13.8.6 비용기반 질의 최적화의 예 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.1 질의 실행을 위한 비용의 구성요소 보조 기억장치의 접근 비용 디스크의 데이타 블록을 찾고, 읽고, 쓰는 비용 정렬, 해싱, 기본 인덱스, 보조 인덱스 등에 따라 다름 저장 비용 질의의 실행 전략에 따라 생성되는 중간 화일들의 저장 비용 계산 비용 질의 실행 단계에서 연산 수행 비용 레코드 탐색, 정렬, 조인을 위한 합병, 필드값 계산 등 메모리 사용 비용 질의를 실행하는 동안 필요한 메모리 버퍼의 갯수 통신 비용 질의와 질의 결과의 전송 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.2 비용 함수에서 사용되는 카탈로그 정보 r(record) : 레코드(투플)의 수 b(blocks) : 블록의 수 bfr(blocking factor) : 화일의 블록킹 인수 x : 다단계 인덱스 (기본 인덱스, 보조 인덱스, 또는 클러스터링 인덱스)의 단계수 b11 : 첫 번째 단계의 인덱스 블록의 수 d : 인덱싱 애트리뷰트에 나타나는 상이한 값들의 수 한 애트리뷰트의 s(selection cardinality) 추정에 사용됨 s : 한 애트리뷰트에 대한 동등조건을 만족시키는 레코드의 평균 갯수 키 애트리뷰트에 대해, s = 1 키가 아닌 애트리뷰트에 대해, s = r/d Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.3 실렉트에 대한 비용함수의 예 S1. 선형탐색 CS1a = b  조건을 만족하는 레코드가 있는 경우 CS1b = b/2  조건을 만족하는 레코드가 없는 경우 S2. 이진탐색 CS2 = log2b + s/bfr  -1 키 애트리뷰트에 대한 동등조건인 경우 : log2b S3. 기본 인덱스(S3a) 또는 해시 키(S3b)를 사용하여 단일 레코드를 검색 CS3a = x + 1  기본 인덱스 CS3b = 1  해시 S4. 순서화된 인덱스를 사용하여 여러 개의 레코드들을 검색 CS4 = x + b/2 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.3 실렉트에 대한 비용함수의 예 (cont.) S5. 클러스터링 인덱스를 사용하여 여러 개의 레코드들을 검색 CS5 = x + s/bfr  S6. 보조(B+-트리) 인덱스 사용 CS6a = x + s  동등 비교의 경우 CS6b = x + b11/2 + r/2  범위 질의의 경우 S7. 논리곱 선택 S1을 사용하거나 S2부터 S6까지 중 한 가지 방법을 사용한다. S8. 복합 인덱스를 사용하는 논리곱 선택 인덱스의 유형에 따라 S3a, S5, 또는 S6a와 같다. Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.4 조인에 대한 비용함수의 예 조인 선택도 (join selectivity, js) : 카티션 프로덕트 화일의 크기(투플 수)에 대한 조인 화일의 크기의 비율 js = |R c S| / |R × S| = |R c S| / (|R|*|S|) J1. 중첩 루프 방법 CJ1 = bR + (bR * bS) + ((js * |R| * |S|)/bfrRS) J2. 부합되는 레코드들을 검색하기 위한 접근구조 사용 CJ2a = bR + (|R| * (xB + sB)) + ((js * |R| * |S|)/bfrRS) CJ2b = bR + (|R| * (xB + sB//bfrB)) + ((js * |R| * |S|)/bfrRS) CJ2c = bR + (|R| * (xB + 1)) + (js * |R| * |S|)/bfrRS) CJ2d = bR + (|R| * h) + ((js * |R| * |S|)/bfrRS) J3. 정렬-합병 조인 CJ3a = bR + bS + ((js * |R| * |S|)/bfrRS) CJ3b = k * ((bR*log2bR) + (bS*log2bS)) + bR + bS + ((js * |R| * |S|)/bfrRS) Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.8.5 다중 릴레이션 질의와 조인 순서화 R4 R3 R2 R1 [그림 16.7] 두개의 좌방향 깊이 (조인) 질의 트리 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.9 ORACLE에서 질의 최적화의 개요 규칙기반 질의 최적화 15개의 서열화된 접근 경로를 유지 전체 테이블 스캔(가장 비효율적인) … ROWID를 사용한 테이블 접근(가장 효율적임) 낮은 서열일수록 보다 효율적인 방식을 의미한다. 비용기반 질의 최적화 여러 접근 경로들과 연산자 알고리즘들을 조사하고 가장 작은 추정 비용을 가지는 실행 계획을 선택한다. I/O, CPU 시간, 필요한 주기억장치 등 자원의 사용 추정치를 기초로 비용을 계산한다 Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 13.10 의미적 질의 최적화 데이타베이스 스키마에 명시된 제약조건 사용한 질의 최적화 예제 SELECT E.LNAME, M.LNAME FROM EMPLOYEE E M WHERE E.SUPERSSN = M.SSN AND E.SALARY > M.SALARY 질의의 의미 : 상사보다 더 많은 봉급을 받는 사원의 이름 제약조건: 어떤 사원도 자신의 상사보다 더 많은 급여를 받을 수 없다. 결론 : 위 질의를 수행할 필요가 없다. Ch13 Fundamentals of Database Systems

Fundamentals of Database Systems 요 약 SQL 질의 처리 관계대수로 번역하여 질의 최적화를 수행한 후, 최적의 처리 전략으로 처리함 질의 연산들을 실행하기 위한 기본 알고리즘들 외부정렬, 실렉트, 조인, 프로젝션, 집계함수, 집합연산, 외부조인, 파이프라인 처리 경험을 사용한 질의 최적화 질의 처리에 유용한 경험의 소개와 질의 최적화 예 질의 최적화에서 선택도와 비용추정치 계산 ORACLE에서 질의 최적화의 개요 의미적 질의 최적화 Ch13 Fundamentals of Database Systems