Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Xử lý câu truy vấn - Nguyễn Trường Sơn
Giới thiệu
Phân tích cú pháp - ngữ nghĩa
+ Biến đổi sang Đại số Quan hệ
- Tối ưu hóa cây truy vấn
• Ước lượng kích thước cây truy vấn 1
Phát sinh và thực thi mã lệnh

Trang 1

Trang 2

Trang 3

Trang 4

Trang 5

Trang 6

Trang 7

Trang 8

Trang 9

Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Xử lý câu truy vấn - Nguyễn Trường Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 5: Xử lý câu truy vấn - Nguyễn Trường Sơn
πL
[σC
(R
×
S)]
41
Áp dụng quy tắc (tt)
§ 10.
Qui
tắc
δ
– δ(R
S)
=
δ(R)
δ(S)
– δ(R
×
S)
=
δ(R)
×
δ(S)
– δ[σC
(R)]
=
σC
[δ(R)]
– δ(R
∩B
S)
=
δ(R)
∩B
S
=
R
∩B
δ(S)
=
δ(R)
∩B
δ(S)
42
Áp dụng quy tắc (tt)
§ 11.
Qui
tắc
ℑ
– Cho
• X
=
tập
thuộc
tính
trong
R
được
gom
nhóm
• Y
=
X
∪
{một
số
thuộc
tính
khác
của
R}
– Ta
có
• δ[Xℑ(R)]
=
Xℑ(R)
• Xℑ(R)
=
Xℑ
[πY
(R)]
43
Xét ví dụ 2
44
πcusNm
σCustomer.cusID=Account.cusID ∧ balance=100
Customer Account
x
Xét ví dụ 2
45
πcusNm
σbalance=100
Customer Account
x
σCustomer.cusID=Account.cusID
Qui tắc σ
Xét ví dụ 2
46
πcusNm
σbalance=100
Customer Account
x
σCustomer.cusID=Account.cusID
Qui tắc σ
Tương đương phép kết
có điều kiện
Xét ví dụ 2 (tt)
47
πcusNm
σbalance=100
Customer Account
Customer.cusID=Account.cusID
Xét ví dụ 2 (tt)
48
Qui tắc σ, πcusNm
σbalance=100 Customer
Account
Customer.cusID=Account.cusID
Xét ví dụ 2 (tt)
49
πcusNm, cusID πcusID
πcusNm
σbalance=100 Customer
Account
Customer.cusID=Account.cusID
Qui tắc π ,
Nội dung chi tiết
§ Giới
thiệu
§ Phân
tích
cú
pháp
-‐
ngữ
nghĩa
§ Biến
đổi
sang
Đại
số
Quan
hệ
§ Tối
ưu
hóa
cây
truy
vấn
§ Ước
lượng
kích
thước
cây
truy
vấn
§ Phát
sinh
và
thực
thi
mã
lệnh
50
Ước lượng kích thước cây truy vấn
§ Trong
quá
trình
tối
ưu
hóa
câu
truy
vấn,
có
thể
có
nhiều
giải
pháp
khác
nhau
– Các
giải
pháp
này
ngang
nhau
về
mặt
chiến
thuật
tối
ưu
hóa
– Chỉ
được
chọn
1
giải
pháp
để
thực
thi
– Việc
lựa
chọn
không
được
thực
hiện
theo
cảm
tính
§ Do
đó,
cần
một
cách
đánh
giá
bằng
định
lượng
à
Ước
lượng
kích
thước
cây
truy
vấn
– Cây
truy
vấn
A
tốt
hơn
cây
truy
vấn
B
khi
kích
thước
A
nhỏ
hơn
kích
thước
B
– Cây
truy
vấn
được
chọn
để
thực
thi
là
cây
truy
vấn
có
kích
thước
nhỏ
nhất
trong
các
ứng
viên
51
Ước lượng kích thước
§ Thống
kê
quan
hệ
R
– T(R):
số
bộ
trong
R
– S(R):
tổng
số
byte
của
1
bộ
trong
R
– B(R):
tổng
số
block
chứa
tất
cả
các
bộ
của
R
– V(R,
A):
số
giá
trị
khác
nhau
mà
thuộc
tính
A
trong
R
có
thể
có
52
Ví dụ
§ Cho
quan
hệ
R
như
sau
– A:
chuỗi
20
bytes
– B:
số
nguyên
4
bytes
– C:
ngày
8
bytes
– D:
chuỗi
68
bytes
– 1
block
=
1024
bytes
§ Vậy
– T(R)
=
5
– S(R)
=
100
– B(R)
=
1
– V(R,
A)
=
3,
V(R,
B)
=
1
– V(R,
C)
=
5,
V(R,
D)
=
4
53
A B C R
x 1 1
D
a
x 1 2 b
1
1
1
3
4
5
a
c
d
y
y
z
Ước lượng kích thước (tt)
§ Ước
lượng:
W
=
R1
×
R2
– S(W)
=
S(R1)
+
S(R2)
– T(W)
=
T(R1)
x
T(R2)
§
Ước
lượng:
W
=
σZ
=
val
(R)
– S(W)
=
S(R)
– T(W)
=
T(R)
/
V(R,
Z)
§
Ước
lượng:
W
=
σZ
<=
val
(R)
– T(W)
=
T(R)
/
2
– Hoặc
T(W)
=
T(R)
/
3
54
Inequality
comparison
Ví dụ
§ Cho
– R(A,
B,
C)
– T(R)
=
10000
– V(R,
A)
=
50
§ Ước
lượng
kích
thước
biểu
thức
S
=
σA=10
∧
B<20
(R)
– T(S)
=
T(R)
/
[V(R,
A)
x
3]
=
10000
/
[50
x
3]
=
67
§ Ước
lượng
kích
thước
biểu
thức
S
=
σA=10
∨
B<20
(R)
– Giả
sử
:
• m1
là
số
bộ
thỏa
A=10
trong
R
• m2
là
số
bộ
thỏa
B<20
trong
R
• Đặt
n
=
T(R)
– T(S)
=
n[1
-‐
(1
-‐
m1/n)(1
–
m2/n)]
55
Ước lượng kích thước (tt)
§ Ước
lượng:
W
=
R1
R2
§ Cho
– X
=
tập
thuộc
tính
của
R1
– Y
=
tập
thuộc
tính
của
R2
§ Xét
trường
hợp
X
∩
Y
=
∅
– Tương
tự
W
=
R1
x
R2
§ Xét
trường
hợp
X
∩
Y
=
A
– Nếu
mọi
giá
trị
của
A
trong
R1
đều
có
trong
R2
• T(W)
=
T(R1)
[T(R2)
/
V(R2,A)]
– Nếu
mọi
giá
trị
của
A
trong
R2
đều
có
trong
R1
• T(W)
=
T(R2)
[T(R1)
/
V(R1,A)]
– Tổng
quát
• T(W)
=
T(R1).T(R2)
/
Max[V(R1,A)
,
V(R2,A)]
56
Ví dụ
§ Cho
– R1
• T(R1)
=
1000
• V(R1,
A)
=
50
• V(R1,
B)
=
100
– R2
• T(R2)
=
2000
• V(R2,
B)
=
200
• V(R2,
C)
=
300
– R3
• T(R3)
=
3000
• V(R3,
C)
=
90
• V(R3,
D)
=
500
57
Ví dụ (tt)
§ Hãy
ước
lượng
U
=
R1(A,
B)
R2(B,
C)
– T(U)
=
(1000
x
2000)/Max(100,200)
=
10000
– V(U,
A)
=
50
– V(U,
B)
=
100
– V(U,
C)
=
300
§ Hãy
ước
lượng
Z
=
R1(A,
B)
R2(B,
C)
R3(C,
D)
– Nhận
xét
:
Z
=
U(A,B,C)
R3(C,
D)
– Vậy
• T(Z)
=
(10000
x
3000)/Max(300,90)=100000
• V(Z,
A)
=
50
• V(Z,
B)
=
100
• V(Z,
C)
=
90
• V(Z,
D)
=
500
58
Ước lượng kích thước (tt)
§ Ước
lượng:
W
=
R1
∪
R2
– Nếu
R1
và
R2
chấp
nhận
giá
trị
lặp
• T(W)
=
T(R1)
+
T(R2)
– Nếu
R1
và
R2
không
chấp
nhận
giá
trị
lặp
• TH1:
R1∪
R2
không
tạo
giá
trị
lặp
T1(W)
=T(R1)
+
T(R2)
• TH2:
R1∪
R2
có
tạo
giá
trị
lặp
T2(W)
<
T(R1)
+
T(R2)
• Tổng
quát
:
T(W)
=
[T1(W)
+
T2(W)]/2
§ Ước
lượng:
W
=
R1
∩
R2
– TH1
:
(trường
hợp
nhỏ
nhất)
R1
∩
R2
=
∅
thì
• T1(W)
=
0
– TH2
:
(trường
hợp
lớn
nhất)
R1
∩
R2
=
R1
hay
R2
thì
• T2(W)
=
T(R1)
hay
T(R2)
– Tổng
quát
:
T(W)
=
[T1(W)+T2(W)]
/
2
59
Ước lượng kích thước (tt)
§ Ước
lượng:
W
=
R1
–
R2
– TH1
:
(trường
hợp
lớn
nhất)
R1
–
R2
=
R1
thì
• T1(W)
=
T(R1)
– TH2
:
(trường
hợp
nhỏ
nhất)
R1
∩
R2
=
R2
thì
• T2(W)
=
T(R1)
–
T(R2)
– Tổng
quát
:
T(W)
=
[T1(W)+T2(W)]
/
2
=
T(R1)
–
T(R2)/2
§ Ước
lượng:
W
=
δ(R)
– Giả
sử
R(a1,a2,a3,,an)
– Vậy
số
bộ
phân
biệt
tối
đa
là
Πi∈[1,n]V(R,ai)
– Trường
hợp
nhỏ
nhất
:
R
rỗng
à
T(W)
=
0
– T(W)
=
Min(T(R)/2
,
Πi∈[1,n]V(R,ai))
60
Ước lượng kích thước (tt)
§ Ước
lượng:
W
=
ℑ(R)
– TH1
:
(trường
hợp
lớn
nhất)
số
bộ
phân
biệt
trong
R
cũng
là
số
nhóm
• T1(W)
=
T(δ(R))
– TH2
:
(trường
hợp
nhỏ
nhất)
R
rỗng
• T2(W)
=
0
– TH3
:
Toàn
bộ
R
tạo
1
nhóm
• T3(W)
=
1
– Tổng
quát
:
T(W)
=
Min(T(R)/2
,
Πi∈[1,n]V(R,ai))
61
Ước lượng kích thước (tt)
§ Kích
thước
sau
cùng
của
cây
truy
vấn
– Là
tổng
kích
thước
của
phép
toán
ở
tất
cả
các
node,
ngoại
trừ
node
lá
và
node
gốc.
62
63
Ví dụ
§ R(a,
b)
– T(R)=5000
– V(R,
a)=50
– V(R,
b)=100
§ S(b,
c)
– T(S)=2000
– V(S,
b)=200
– V(S,
c)=100
δ
σa =10
R S
δ
σa =10
R
S
5000
2000
100
1000
500
δ δ
σa =10
R
S
5000
100
2000
1000 50
250
1
2
Chi phí ở
nút gốc
không có ý
nghĩa
Chi phí ở
nút lá
không có ý
nghĩa
1150
1100
Nội dung chi tiết
§ Giới
thiệu
§ Phân
tích
cú
pháp
-‐
ngữ
nghĩa
§ Biến
đổi
sang
Đại
số
Quan
hệ
§ Tối
ưu
hóa
cây
truy
vấn
§ Ước
lượng
kích
thước
cây
truy
vấn
§ Phát
sinh
và
thực
thi
mã
lệnh
64
Tối ưu hóa cây truy vấn
65
Phân
tích
cú
pháp
Kiểm
tra
ngữ
nghĩa
Đưa
về
dạng
Biểu
diễn
trong
Tối
ưu
hóa
Phát
sinh
mã
Thực
thi
mã
Câu truy vấn Kết quả truy vấn
66
Phát sinh mã (tt)
§ Từ
cây
Truy
vấn
sau
bước
tối
ưu
hóa
DBMS
sẽ
– Phát
sinh
mã
lệnh
của
ngôn
ngữ
chủ
(ngôn
ngữ
dùng
để
viết
chính
DBMS)
để
thực
thi
cây
truy
vấn
ấy
– Các
phép
toán
của
Đại
số
quan
hệ
• Được
cài
đặt
trước
thành
một
bộ
các
hàm
(với
hệ
thống
tham
số
đầy
đủ).
• Ví
dụ
– Projection
(R:
Relation,A:
Array
of
Attribute)
As
Relation
– Selection
(R:
Relation,C:
Array
of
Condition)
As
Relation
–
– Việc
phát
sinh
mã
lệnh
thực
chất
là
việc
phát
sinh
các
lời
gọi
các
hàm
trên
và
truyền
cho
chúng
đối
số
cụ
thể
67
Phát sinh mã (tt)
§ Sắp
xếp
ngoài
– Việc
sắp
xếp
là
cần
thiết
cho
thực
thi
truy
vấn
(Vd
:
Order
by,
join,
union,
distinct)
– Có
trường
hợp
yêu
cầu
truy
vấn
liên
quan
thuộc
tính
không
có
chỉ
mục
trên
ấy
– Tập
tin
CSDL
lớn
à
không
chứa
đủ
trong
bộ
nhớ
chính
để
sắp
xếp
à
Cấn
phải
sắp
xếp
ngoài
(dùng
°ile
tạm
trên
đĩa)
– Thuật
toán
:
merge
short
• Ban
đầu
sắp
xếp
trong
các
run
nhỏ
của
tập
tin
chính
• Sau
đó
trộn
các
run
nhỏ
và
lại
sắp
xếp
để
có
run
lớn
hơn
• Lặp
lại
quá
trình
đến
khi
chỉ
còn
1
run
68
Phát sinh mã (tt)
§ Cài
đặt
hàm
phép
chọn
1
điều
kiện
– Tìm
tuyến
tính
:
Đọc
từng
mẫu
tin
và
kiểm
tra
điều
kiện
chọn
– Nếu
điều
kiện
chọn
là
so
sánh
bằng
trên
thuộc
tính
là
khóa
sắp
xếp
°ile
à
tìm
nhị
phân
– Nếu
điều
kiện
chọn
là
so
sánh
bằng
trên
thuộc
tính
là
khóa
có
primary
index
/
hash
key
à
dùng
primary
index
/
hash
key
– Nếu
điều
kiện
chọn
là
so
sánh
bằng
trên
thuộc
tính
không
là
khóa
nhưng
có
clustering
index
à
dùng
clustering
index
– Nếu
điều
kiện
chọn
không
phải
so
sánh
bằng
à
dùng
Secondary
Index
– Nếu
điều
kiện
là
so
sánh
≤,
≥
thì
tìm
cho
điều
kiện
=
trước
69
Phát sinh mã (tt)
§ Cài
đặt
hàm
phép
chọn
nhiều
điều
kiện
(nối
bởi
AND)
– Chọn
1
điều
kiện
để
thực
hiện
như
phép
chọn
đơn.
Khi
có
kết
quả,
loại
dần
những
bộ
không
thỏa
các
điều
kiện
còn
lại
– Thực
hiện
từng
điều
kiện
như
từng
phép
chọn
đơn
và
giao
kết
quả
với
nhau
70
Phát sinh mã (tt)
§ Cài
đặt
hàm
phép
kết
R
R.A=S.B
S
– Dùng
2
vòng
lặp
lồng
nhau
:
Duyệt
mỗi
bộ
r
trong
R,
duyệt
mỗi
bộ
s
trong
S
và
kiểm
tra
điều
kiện
r.A=s.B
– Nếu
có
chỉ
mục
trên
B
à
dùng
1
vòng
lặp
:
Với
mỗi
bộ
r
trong
R,
truy
cập
trực
tiếp
(bằng
chỉ
mục)
các
bộ
s
trong
S
thỏa
s.B
=
r.A
– Nếu
R
và
S
đều
được
sắp
xếp
vật
lý
theo
A
và
B
thì
duyệt
trên
°ile
tương
ứng
và
so
khớp
các
giá
trị
A
và
B
– Dùng
hàm
băm
• Băm
trên
khóa
A
à
phân
các
dòng
r
trong
R
vào
các
lô
Ri
• Băm
trên
khóa
B
à
phân
các
dòng
s
trong
S
vào
các
lô
Si
• Quét
qua
Ri
và
Si
và
tìm
các
lô
mà
Ri.A
=
Si.B
71
Thực thi mã lệnh (tt)
§ Hiệu
quả
của
việc
thực
thi
mã
lệnh
đã
phát
sinh
ở
bước
trước
phụ
thuộc
vào
2
yếu
tố
– Mức
độ
tối
ưu
của
cây
truy
vấn
– Mức
độ
tối
ưu
của
các
hàm
cài
đặt
các
phép
toán
đại
số
quan
hệ
§ Tối
ưu
hóa
cây
truy
vấn
– Áp
dụng
các
quy
tắc
(đã
học
trong
chương
này)
§ Mức
độ
tối
ưu
của
các
hàm
– Vận
dụng
các
cấu
trúc
lưu
trữ
Dữ
liệu
(chương
5)
và
các
thuật
toán
truy
xuất,
tìm
kiếm
trên
các
cấu
trúc
Dữ
liệu
(môn
Cấu
trúc
Dữ
liệu
1
&
2)
– Đặc
biệt
quan
tâm
cài
đặt
cho
phép
chọn
và
phép
kết
Tài liệu tham khảo
§ [5]
Database
systems:
the
complete
book,
Hector
Garcia-‐Molina,
Jeffrey
D.
Ullman,
Jennifer
Widom,
Pearson
Prentice
Hall,
2009
– Chapter
16.
Query
Optimizer
72
File đính kèm:
bai_giang_he_quan_tri_co_so_du_lieu_chuong_5_xu_ly_cau_truy.pdf

