You are on page 1of 17

10/9/2010

Trường ðại học Sư phạm thành phố Hồ Chí Minh Mục tiêu
Khoa Công ngh
thông tin

CÁC HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU ● Hiểu quy trình thực hiện các câu truy vấn

● Xây dựng những câu truy vấn một cách hiệu quả

Bài 4 : TỔ CHỨC KHAI THÁC


Ts. Nguyễn An Tế
Nguyễn Tiến Dũng
Nguyễn Thúy Ngọc

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 2

Tài liệu tham khảo Nội dung

[1] Ramez Elmasri, Shamkant B. Navathe, 1. Quy trình thực hiện câu truy vấn của DBMS
Fundamentals of Database Systems (ch. 15), 4th
Edition, 2003. 2. Tiền xử lý câu truy vấn

[2] Jeffrey D. Ullman, Jennifer Widom, Hector Garcia- 3. Chuyển ñổi câu truy vấn
Monlina, Database Systems: The complete Book (ch. 15,
ch. 16), 2001.
4. Tối ưu hóa câu truy vấn

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 3 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 4

1
10/9/2010

1. Quy trình thực hiện câu truy vấn 1. Quy trình thực hiện câu truy vấn (tt.)

Câu truy vấn biểu diễn bằng ngôn ngữ cấp cao Kết quả Preprocessor

Runtime Database
Preprocessor Processor
Scanning: xác ñịnh các từ khóa, tên thuộc tính, tên các quan hệ,…

Hình thức trung gian của truy vấn (tree, graph) Code

Parsing: kiểm tra cú pháp ngôn ngữ, biểu diễn Parse Tree
Query Code
Query Optimizer
Generator

Validating: kiểm tra ngữ nghĩa: quan hệ, thuộc tính, kiểu dữ liệu
Cách thực hiện

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 5 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 6

1. Quy trình thực hiện câu truy vấn (tt.) 1. Quy trình thực hiện câu truy vấn (tt.)
SQL query
Query Optimizer

lựa chọn cách thực hiện phù hợp cho việc xử lý câu truy vấn
Parse Query

Query expression tree


Query Code Generator
Select logical query plan

phát sinh code ñể thực hiện kế hoạch ñã ñược lựa chọn


Query Logical query plan tree
Optimizer
Runtime Database Processor Select physical plan

Physical query plan tree


biên dịch code của câu truy vấn ñể trả về kết quả truy vấn
Execute plan

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 7 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 8

2
10/9/2010

Nội dung 2. Tiền xử lý câu truy vấn


SQL query
1. Quy trình thực hiện câu truy vấn của DBMS

Parse Query
2. Tiền xử lý câu truy vấn
Query expression tree

3. Chuyển ñổi câu truy vấn Select logical query plan

Query Logical query plan tree


4. Tối ưu hóa câu truy vấn Optimizer
Select physical plan

Physical query plan tree

Execute plan

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 9 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 10

2. Tiền xử lý câu truy vấn (tt.) 2. Tiền xử lý câu truy vấn (tt.)

<Query> ● NHANVIEN (manv, tennv, ngaysinh, phai, luong)

<SFW> ● THAMGIA (mada, manv, ngaybatdau, ngayketthuc)


Liệt kê mã ñề án mà nhân viên tham gia có lương >2.000.000
SELECT <Select List> FROM <FromList> WHERE <Condition> SELECT mada
FROM THAMGIA
<Attribute> WHERE manv IN (
<Relation> <Tuple> IN <Query>
SELECT manv
<Attribute> = <Attribute>
<Attribute> LIKE <Pattern>
FROM NHANVIEN
<Condition> = <Condition> WHERE luong > 2.000.000

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 11 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 12

3
10/9/2010

<Query>
Nội dung
<SFW>

1. Quy trình thực hiện câu truy vấn của DBMS


SELECT <Select List> FROM <FromList> WHERE <Condition>

<Attribute>
<Tuple> 2. Tiền xử lý câu truy vấn
<Relation> <Query>
<Attribute>
mada THAMGIA
manv
IN 3. Chuyển ñổi câu truy vấn
<SFW>
3.1 Chuyển ñổi từ SQL sang ðSQH
SELECT <Select List> FROM <FromList> WHERE <Condition>
3.2 Các quy tắc biến ñổi tương ñương trong ðSQH
<Attribute> <Relation> <Attribute> > <Pattern>
4. Tối ưu hóa câu truy vấn
manv NHANVIEN luong 2.000.000
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 13 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 14

3.1 Chuyển ñổi từ SQL sang ðSQH 3.1 Chuyển ñổi từ SQL sang ðSQH (tt.)
SQL query

● Query block: khối truy vấn ñơn vị SELECT-FROM-

Parse Query
WHERE-GROUP BY-HAVING dùng ñể chuyển sang ðSQH
Query expression tree

Select logical query plan ● Truy vấn lồng: tách thành khối lệnh ghép thành các
Query Logical query plan tree khối truy vấn ñơn vị (query blocks)
Optimizer
Select physical plan

Physical query plan tree

Execute plan

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 15 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 16

4
10/9/2010

3.1 Chuyển ñổi từ SQL sang ðSQH (tt.) Nội dung

SELECT honv, tennv


1. Quy trình thực hiện câu truy vấn của DBMS
FROM NHANVIEN
WHERE luong> (SELECT MAX (luong)
FROM NHANVIEN 2. Tiền xử lý câu truy vấn
WHERE maphong = 5);

3. Chuyển ñổi câu truy vấn


SELECT honv, tennv SELECT MAX (luong) 3.1 Chuyển ñổi từ SQL sang ðSQH
FROM NHANVIEN FROM NHANVIEN
WHERE luong > C WHERE maphong = 5 3.2 Các quy tắc biến ñổi tương ñương trong ðSQH

πhonv, tennv (σluong>C(NHANVIEN)) τMAX luong (σmaphong=5 (NHANVIEN)) 4. Tối ưu hóa câu truy vấn

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 17 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 18

3.2 Các quy tắc biến ñổi – QT 1 3.2 Các quy tắc biến ñổi – QT 2

QT1: Xử lý các toán tử AND trong ñiều kiện QT2: Thay ñổi thứ tự của các phép chọn

σ c1 AND c 2... AND cn (R ) ≡ σ c1 (σ c 2 (...σ cn (R ))...) σ c1 (σ c 2 (R )) ≡ σ c 2 (σ c 1 (R ))


NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)
NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)

σ maphong = ‘KT’ AND phai = ‘NAM’ (NHANVIEN) σ maphong = ‘KT’(σ phai = ‘NAM’ (NHANVIEN))
≡ ≡
σ maphong = ‘KT’( σ phai = ‘NAM’ (NHANVIEN)) σ phai = ‘NAM’(σ maphong = ‘KT’ (NHANVIEN))
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 19 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 20

5
10/9/2010

3.2 Các quy tắc biến ñổi – QT 3 3.2 Các quy tắc biến ñổi – QT 4

QT3: Xử lý các phép chiếu QT4: Thay ñổi thứ tự các phép chọn và phép chiếu

π < DS1> (π < DS 2> (...π < DSn> (R ))...) ≡ π < DS1> (R ) π A1, A 2 ,..., An (σ c (R )) ≡ σ c (π A1, A 2 ,..., An (R ))
Nu nh c ⊂ [A1…An]

NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong) NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)

π manv, honv, tennv (π manv, honv, tennv, ngaysinh (NHANVIEN)) π manv, honv, tennv, phai (σ phai = ‘NAM’ (NHANVIEN))
≡ ≡
π manv, honv, tennv (NHANVIEN) σ phai= ‘NAM’ (π manv, honv, tennv, phai (NHANVIEN))
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 21 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 22

3.2 Các quy tắc biến ñổi – QT 5 3.2 Các quy tắc biến ñổi – QT 6a

QT6a: Thay ñổi thứ tự giữa phép chọn và phép kết


QT5: Tính giao hoán của phép kết và tích Descartes
σ c (R S) ≡ (σ c ( R)) S
(R C S ) = (S C R) (R x S ) = ( S x R ) Nu nh c ⊂ R (hay c ⊂ S)

NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)


NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)
PHONGBAN (maphong, tenphong, maql)
PHONGBAN (maphong, tenphong, maql)

(NHANVIEN PHONGBAN) σ phai = ‘NAM’ (NHANVIEN PHONGBAN)

≡ NV.maphong= PB.maphong

(PHONGBAN NHANVIEN)
NV.maphong= PB.maphong (σphai = ‘NAM’ (NHANVIEN)) PHONGBAN

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 23 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 24

6
10/9/2010

3.2 Các quy tắc biến ñổi – QT 6b 3.2 Các quy tắc biến ñổi – QT 7a

QT6b: Phân phối giữa phép chọn và phép kết QT7a: Phân phối giữa phép chiếu và phép kết

σc ( R S) ≡(σc1(R)) (σc2 (S)) ∏ (R L C S) ≡ (∏ A1 ,A 2 , A3 ,...A N ( R)) C (∏ B1 ,B2 , B3 ,...BM ( S ))


Nu c = c1 and c2, (c1 ∈ R và c2 ∈ S) L = {A1,…,AN,B1,…,BM}; R (A1,…,AN); S (B1,…,BM) V)i c ⊂ L
NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)
NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)
PHONGBAN (maphong, tenphong, maql)
PHONGBAN (maphong, tenphong, maql)

σ phai= ‘NAM’ AND tenphong= ‘Kế toán’ (NHANVIEN PHONGBAN) π manv,tennv,maphong,tenphong (NHANVIEN PHONGBAN)

≡ ≡ NV.maphong=PB.maphong

(πmanv, honv, maphong(NHANVIEN)) (πtenphong, maphong(PHONGBAN))


(σphai = ‘NAM’ (NHANVIEN)) (σtenphong= ‘Kế toán’ (PHONGBAN)) NV.maphong=PB.maphong

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 25 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 26

3.2 Các quy tắc biến ñổi – QT 7b 3.2 Các quy tắc biến ñổi – QT 8

QT7b: Phân phối giữa phép chiếu và phép kết QT8: Giao hoán của phép hội và phép giao
∏ L (R CS) ≡ (∏A , A , A ,...A
1 2 3 N , A N +1A N+ 2 ...A N +K
( R )) C (∏B ,B
1 2 , B 3 ,...B M B M+1B M+ 2 ...B M+ P
( S ))

Với c ⊄ L,, R(A1,…,AN, AN+1,… AN+K) S(B1,…,BM, BM+1,…,BM+P) R ∪ S ≡ S ∪ R


NHANVIEN (manv, honv, tennv, ngaysinh, phai, luong, maphong)
R ∩ S ≡ S ∩ R
PHONGBAN (maphong, tenphong, maql)

π manv, tennv, tenphong (NHANVIEN PHONGBAN)

≡ NV.maphong=PB.maphong

(πmanv, tennv, maphong(NHANVIEN)) (πtennv,maphong(PHONGBAN


PHONGBAN))
NV.maphong=PB.maphong

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 27 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 28

7
10/9/2010

3.2 Các quy tắc biến ñổi – QT 9 3.2 Các quy tắc biến ñổi – QT 10

QT9: Kết hợp giữa phép kết, tích Descartes, hội và giao QT 10: Phân phối của phép chọn ñối với các phép toán

( R θ S) θ T = R θ (S θ T) σ c (R θ S) = (σ c (R))θ (σ c (S))
Nếu θ là 1 trong các phép toán ∩, ∪, ─
Trong ñó θ là 1 trong các phép toán , X, ∩, ∪

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 29 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 30

3.2 Các quy tắc biến ñổi – QT 11 3.2 Các quy tắc biến ñổi – QT 12

QT 11: Phân phối của phép chiếu ñối với các phép toán ● QT 12: Chuyển các phép (σ, ×) thành phép kết

∏ L (R θ S) = (∏ L (R)) θ (∏ L (S)) σc (R x S) = R c S
Nếu θ là 1 trong các phép toán ∩, ∪, ─ ● Luật De Morgan

c ≡ NOT (c1 AND c2) ≡ NOT (c1) OR NOT (c2)


c ≡ NOT (c1 OR c2) ≡ NOT (c1) AND NOT (c2)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 31 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 32

8
10/9/2010

Nội dung 4.1 Giải thuật heuristic

1. Áp dụng QT 1, tách các phép chọn liên kết thành 1 dãy các phép chọn.
1. Quy trình thực hiện câu truy vấn của DBMS
2. Áp dụng QT 2,4,6 và 10, ñể ñẩy phép chọn xuống càng sâu càng tốt

2. Tiền xử lý câu truy vấn 3. Áp dụng QT 9 ñể tái tổ chức cây cú pháp sao cho phép chọn ñược thực
hiện có lợi nhất (chọn ít nhất)heuristic

3. Chuyển ñổi câu truy vấn 4. Phối hợp tích Decartes với phép chọn thích hợp theo sauphép kết
5. Áp dụng QT 3, 4, 7 và 11 ñể ñẩy phép chiếu xuống càng sâu càng tốt

4. Tối ưu hóa câu truy vấn (có thể phát sinh phép chiếu mới)

4.1 Giải thuật Heuristic 6. Tập trung các phép chọn


7. Áp dụng QT3 ñể loại những phép chiếu vô ích
4.2 Ước lượng chi phí

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 33 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 34

4.1 Giải thuật heuristic (tt.) 4.1 Giải thuật heuristic (tt.)
Liệt kê họ tên NHANVIEN sinh sau năm 1960 và làm dự án ‘ABC’ ∏honv, tennv( σmada = ‘ABC’ ∧ ngaysinh > ’31-12-1960’ ∧ NV.manv=TG.manv ∧ DA.mada=TG.mada
(NHANVIEN x DEAN x THAMGIA))
Ngôn ngữ SQL

SELECT honv, tennv


∏ honv, tennv

Quy tắc 1 mada = ‘ABC’


FROM NHANVIEN NV, DEAN DA, THAMGIA TG
WHERE mada=‘ABC’ AND NV.manv=TG.manv AND
σ ngaysinh > ’31-12-1960’

NV.manv=TG.manv

DA.mada=TG.mada AND ngaysinh> ’31-12-1960’ DA.maDA=TG.mada

x
Ngôn ngữ ðSQH

∏honv, tennv( σ mada = ‘ABC’ ∧ ngaysinh > ’31-12-1960’ ∧ x DEAN

NV.manv=TG.manv ∧ DA.mada=TG.mada NHANVIEN NGANH

(NHANVIEN x DEAN x THAMGIA))


Cây biểu diễn biểu thức truy vấn (1)
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 35 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 36

9
10/9/2010

4.1 Giải thuật heuristic (tt.) 4.1 Giải thuật heuristic (tt.)

Quy tắc 2, 4, 6, 10
∏ honv, tennv
∏ honv, tennv
Quy tắc 3

σ DA.maDA=TG.mada
σ NV.manv=TG.manv

x x
σ NV.manv=TG.manv σ mada = ‘ABC’ σ DA.maDA=TG.mada σ ngaysinh > ’31-12-1960’

x DEAN x NHANVIEN

σ ngaysinh > ’31-12-1960’ THAMGIA σ mada = ‘ABC’ THAMGIA

NHANVIEN DEAN
ðưa phép chọn xuống sâu các nhánh (2) Hoán vị phép chọn (3)
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 37 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 38

4.1 Giải thuật heuristic (tt.) 4.1 Giải thuật heuristic (tt.)

∏ Quy tắc 3, 4, 7, 11 ∏ honv, tennv


Quy tắc 12 honv, tennv

NV.manv=TG.manv
NV.manv=TG.manv

∏ manv ∏ manv, honv, tennv

DA.maDA=TG.mada
σ ngaysinh > ’31-12-1960’
DA.maDA=TG.mada
σ
∏ ∏
ngaysinh > ’31-12-1960’

σ NHANVIEN
mada
mada,manv NHANVIEN

DEAN
mada = ‘ABC’
THAMGIA

σ mada = ‘ABC’ THAMGIA

Thay thế các phép tích Descartes và phép chọn bằng phép kết (4)
DEAN
ðẩy phép chiếu xuống dưới (5)
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 39 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 40

10
10/9/2010

4.1 Giải thuật heuristic (tt.) Nội dung

Ngôn ngữ ðSQH


1. Quy trình thực hiện câu truy vấn của DBMS
πmada( σ mada = ‘ABC’ (DEAN)))
∏honv,tennv((π (π
πmada, manv(THAMGIA))
DA.mada=TG.mada
2. Tiền xử lý câu truy vấn
NV.manv=TG.manv (π
πmanv,honv,tennv( σ ngaysinh > ’31-12-1960’ (NHANVIEN))))
3. Chuyển ñổi câu truy vấn
Ngôn ngữ SQL
SELECT honv, tennv
FROM
(SELECT mada FROM DEAN
4. Tối ưu hóa câu truy vấn
WHERE mada = ‘ABC’) AS DA INNER JOIN
(SELECT mada, manv FROM THAMGIA) AS TG 4.1 Giải thuật Heuristic
ON DA.mada=TG.mada INNER JOIN
(SELECT manv, honv, tennv FROM NHANVIEN WHERE ngaysinh> ’31-12-1960’ ) NV
ON NV.manv=TG.manv 4.2 Ước lượng chi phí

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 41 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 42

4.2 Ước lượng chi phí 4.2 Ước lượng chi phí (tt.)
SQL query ● So sánh chi phí giữa những cách thực hiện câu truy vấn:
chọn cách có chi phí thấp nhất
Parse Query
Chi phí lưu trữ thứ cấp
Query expression tree CSDL lớn

Select logical query plan Chi phí lưu trữ Hệ CSDL khác nhau

Query tập trung vào các


Logical query plan tree
Optimizer Chi phí tính toán CSDL nhỏ &
thành phần chi phí
trung bình
Select physical plan khác nhau
Chi phí sử dụng bộ nhớ
Physical query plan tree

Execute plan
Chi phí truyền thông CSDL phân tán

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 43 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 44

11
10/9/2010

4.2 Ước lượng chi phí (tt.) Nội dung

•Các tham số về kích thước file Số mẩu tin của bảng (tuples): T(R) 1. Quy trình thực hiện câu truy vấn của DBMS
NHANVIEN Kích thước 1 mẩu tin: S(R)
Tổng số block chứa tất cả các bộ: b 2. Tiền xử lý câu truy vấn
manv tenv phai hsl
Số mẩu tin của 1 block: bfr
NV01 An Nam 1.5 3. Chuyển ñổi câu truy vấn
Số giá trị khác nhau của thuộc tính A
NV02 Bình Nam 1.5
(kích thước của miền giá trị): V(R,A) 4. Tối ưu hóa câu truy vấn
NV03 Dung Nữ 3
NV04 Duyên Nữ 2.5 T(NV)=4 records 4.1 Giải thuật Heuristic
S(NV)= 20+50+10+8=88 bytes
T(NV)* S(NV)= 352 bytes
4.2 Ước lượng chi phí
manv: char (20)
tennv: nvarchar (50) G/s 1 block =1024 bytes  b=1 4.2.1 Hàm chi phí cho Select
phai: nvarchar (10) V(NV,manv)=4;V(NV,tenv)=4;
hsl (hệ số lương): double V(NV,phai)=2; V(NV,hsl)=3 4.2.2 Hàm chi phí cho Join
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 45 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 46

4.2.1 Hàm chi phí cho Select 4.2.1 Hàm chi phí cho Select

[Ullman + 2001] [Ullman + 2001]


● Ước lượng W= σA=x (R) (ñối với ñiều kiện =) ● Ước lượng W= σA>x (R) (ñối với ñiều kiện >, >=, <, <=)

Cách 1

Cách 2

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 47 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 48

12
10/9/2010

4.2.1 Hàm chi phí cho Select 4.2.1 Hàm chi phí cho Select (tt.)

[Elmasri+2003]
● Ví dụ
Cho R (A, B, C), tính chi phí S= σA=10 ∧ B<20 (R)
Hàm tính chi phí cho Select theo phương pháp tìm kiếm Pi: Si
Với T(R)=10.000; V(R,A) = 50
Chi phí truy cập block tính theo hàm Si: CSi
Ta có:

Lưu ý: hàm tính chi phí chỉ dựa trên số block chuyển từ memory ñến ñĩa
(chưa ñề cập thời gian tính toán, chi phí lưu trữ và các yếu tố khác)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 49 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 50

4.2.1 Hàm chi phí cho Select (tt.) 4.2.1 Hàm chi phí cho Select (tt.)

● S1. Tìm kiếm tuyến tính ● S1. Tìm kiếm tuyến tính (tt.)
– Duyệt từng mẩu tin, và kiểm tra giá trị thuộc tính của – ðối với thuộc tính không khóa
mẩu tin ñó có thỏa mãn ñiều kiện chọn (không nhất CS1a = b
thiết là ñiều kiện =) hay không
– ðộ phức tạp: O(n) – ðối với ñiều kiện =, thuộc tính khóa
CS1b = (b/2)
o ñặc biệt, nếu không tìm thấy mẩu tin nào CS1b = b

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 51 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 52

13
10/9/2010

4.2.1 Hàm chi phí cho Select (tt.) 4.2.1 Hàm chi phí cho Select (tt.)

● S2. Tìm kiếm nhị phân ● S2. Tìm kiếm nhị phân (tt.)
– Nếu ñiều kiện chọn (=) trên thuộc tính có sắp xếp thứ CS2 = log2b + [(s/bfr)] – 1
tự thì việc tìm kiếm nhị phân hiệu quả hơn tìm kiếm s: số mẩu tin thỏa mãn ñiều kiện = trên thuộc tính Ak

tuyến tính
– ðộ phức tạp: O(log2n) – ðặc biệt ñối với ñiều kiện = trên thuộc tính khóa (hay
UNIQUE)
CS2 =log2b

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 53 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 54

4.2.1 Hàm chi phí cho Select (tt.) 4.2.1 Hàm chi phí cho Select (tt.)

● Ví dụ: Cho lược ñồ quan hệ ● Truy vấn: σmaphong>5 ∧ manv=‘NV05’ (Nhanvien)


Nhanvien (manv, honv, tennv, ngaysinh, gioitinh, luong, maphong) – ðối với ñiều kiện maphong>5
Phongban (maphong, tenphong, ngaythanhlap, maql) CS1a= b=2000
– ðối với ñiều kiện manv=‘NV05’
Câu hỏi: Tính chi phí cho câu truy vấn sau CS1a= b/2=1000
Truy vấn: σmaphong>5 ∧ manv=‘NV05’ (Nhanvien)
CS2 = log2b = log22000 = log22.103 = 1+ 3log210 ≈ 11
Biết rNV = 10.000 mẩu tin, bNV=2000 blocks
 Vậy chọn ñiều kiện manv=‘NV05’ ñể thực hiện trước

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 55 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 56

14
10/9/2010

Nội dung 4.2.2 Hàm chi phí cho Join

1. Quy trình thực hiện câu truy vấn của DBMS [Ullman,+ 2001]
2. Tiền xử lý câu truy vấn R1 (A, B, C); R2 (A, D)

3. Chuyển ñổi câu truy vấn TH1: V(R1,A) ≤ V(R2,A)

4. Tối ưu hóa câu truy vấn


4.1 Giải thuật Heuristic
4.2 Ước lượng chi phí TH2: V(R2,A) ≤ V(R1,A)
4.2.1 Hàm chi phí cho Select
4.2.2 Hàm chi phí cho Join
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 57 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 58

4.2.2 Hàm chi phí cho Join (tt.) 4.2.2 Hàm chi phí cho Join (tt.)

[Ullman + 2001] ● Ví dụ tính chi phí R1 (A, B) R2 (B, C) R3 (C, D)


● Tổng quát
T(R1) = 1000 T(R2) = 2000 T(R3) = 3000
V(R1, A) = 50 V(R2, B) = 200 V(R3, C) = 90

● Số lượng giá trị của thuộc tính không tham gia phép kết V(R1, B) = 100 V(R2, C) = 200 V(R3, D) = 500

V (W, A) = min {V (R1, A), V(R2, A)}


V (W, B) = V (R1, B)
V (W, C) = V (R1, C)
V (W, D) = V (R2, D)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 59 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 60

15
10/9/2010

4.2.2 Hàm chi phí cho Join (tt.) 4.2.2 Hàm chi phí cho Join (tt.)

Z= R1 (A, B) R2 (B, C) Z= U R3 (C, D)

V (U, A) = V (R1, A) = 50 V (Z, A) = V (R1, A) = 50


V (U, B) = V (R1, B) = 100 V (Z, B) = V (R1, B) = 100
V (U, C) = V (R2, C) = 300 V (Z, C) = V (R3, C) = 90
V (Z, D) = V (R2, D) = 500

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 61 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 62

4.2.2 Hàm chi phí cho Join (tt.) 4.2.2 Hàm chi phí cho Join (tt.)

[Elmasri+2003] ● ðộ chọn lọc của phép kết (js)


js = | (R C S) | / | R x S | = | (R C S) | / (|R| * |S |)
Hàm tính chi phí cho Join theo phương pháp tìm kiếm Pi : Ji 0 <= js <= 1
Chi phí truy cập block tính theo hàm Ji : Cji ● Kích thước của tập kết quả sau khi thực hiện phép kết
| (R C S) | = js * |R| * |S |

● R.A=S.B
Lưu ý: hàm tính chi phí chỉ dựa trên số block chuyển từ memory ñến ñĩa – Nếu A là khóa của R thì | (R C S) | <= |S|, js<= 1/|R|
(chưa ñề cập thời gian tính toán, chi phí lưu trữ và các yếu tố khác)
– Nếu B là khóa của S thì | (R C S) | <= |R|, js<= 1/|S|

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 63 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 64

16
10/9/2010

4.2.2 Hàm chi phí cho Join (tt.) 4.2.2 Hàm chi phí cho Join (tt.)

● J1. Phép kết lồng nhau ● Ví dụ: Tính chi phí cho phép kết sau
– Giả sử R là vòng lặp ngoài
Truy vấn: NHANVIEN NV.maphong=PB.maphong PHONGBAN

CJ1 = bR + (bR*bS) + ((js* |R|* |S|)/bfrRS)


Biết: rNhanvien=10000, rPhongban=125, bNhanvien=2000, bPhongban=13,
brfNV_PB =4

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 65 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 66

4.2.2 Hàm chi phí cho Join (tt.)

● Ta có js = 1/|PHONGBAN| = 1/125

● Sử dụng J1 với NHANVIEN là vòng lặp ngoài


CJ1= bNV+ (bNV*bPB) + ((js*rNV*rPB)/brfNV_PB)
=2000 + (2000*13) + ((1/125 * 10000 * 125)/4) =30500

● Sử dụng J1 với PHONGBAN là vòng lặp ngoài


CJ1= bPB+ (bPB*bNV) + ((js*rNV*rPB)/brfNV_PB)
=13+ (13*2000) + ((1/125 * 10000 * 125)/4) =28513

Vậy sử dụng PHONGBAN là vòng lặp ngoài

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 67 Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc [HQTCSDL-Bài 4: Tổ chức khai thác] 68

17

You might also like