Tải bản đầy đủ (.pdf) (16 trang)

Sử lý truy vấn cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (774.41 KB, 16 trang )

Thiết kế và quản trị cơ sở dữ liệu

Xử lý truy vấn và
hiệu năng hệ CSDL

Vũ Tuyết Trinh

Bộ môn Hệ thống thông tin, Viện CNTT&TT
Đại học Bách Khoa Hà Nội

Xử lý câu hỏi truy vấn
Câu lệnh
SQL

Phân tích
cú pháp
(parser)

Biểu thức
ĐSQH

Bộ tối ưu
(optimizer)

Biểu thức
ĐSQH
tối ưu

Bộ sinh mã
(code generator)


Chương trình
tối ưu

CuuDuongThanCong.com

Vũ Tuyết Trinh

/>
1


Thiết kế và quản trị cơ sở dữ liệu

Cây toán tử
TYPE

WAGON (NW, TYPE, COND, STATION,
CAPACITY, WEIGHT)
TRAIN (NT, NW)


Cây toán tử logic




Thứ tự các phép toán

NW


Cây toán tử vật lý


Các thuật toán thực thi phép toán

WAGON
(NW, TYPE...)
NT =

4002

TRAIN
(NT, NW)

Các phép toán vật lý (thuật toán)


Query Blocks








SELECT-FROMWHERE-GROUPBYORDERBY
VIEW được coi là 1
block riêng rẽ


Dạng cây thực thi
(right-deep, bushy, …)
Thứ tự kết nối



Thuật toán






Sort
Aggregates
Select
Project
Join




CuuDuongThanCong.com

Vũ Tuyết Trinh

Nested Loop
Sort-Merge
Hash-Join


/>
2


Thiết kế và quản trị cơ sở dữ liệu

Truy nhập bảng






Truy nhập tuần tự (Sequential scan): đọc theo
khối
Truy nhập theo địa chỉ (index scan): truy nhập
vào bản ghi dựa trên chỉ mục
Chi phí truy nhập ?

S

Phép tốn nhiều pha:
Nested-Loops Join


Ngun tắc





Matching
Tuple R

Đặc điểm




Đọc từng bản ghi của quan
hệ R (external relation) & lặp
trên quan hệ S (internal
relation)
one-and-haft pass, nonblocking

Tuple R

Tuple S

SOURCE
R

SOURCE
S

Chi phí ?

Tuple-based NLJ, block-based NLJ, index-based NLJ

CuuDuongThanCong.com


Vũ Tuyết Trinh

/>
3


Thiết kế và quản trị cơ sở dữ liệu

Sort Merge Join


Nguyên tắc





Đặc điểm




Merge

Sắp xếp dữ liệu đầu vào
trộn dữ liệu
two-pass, blocking algorithm

Sort


Chi phí?

Sort

SOURCE
R

SOURCE
S

Hash Join (HJ)


Nguyên tắc





Đặc điểm




Tạo bảng băm trên R
Đọc S và đối sánh với dữ liệu
trên bảng băm

Matching
Hash Table R


1



n

two-pass, blocking algorithm

probe

Chi phí ?
build
Tuple R

Tuple S

hash(Tuple R)hash(Tuple S)
SOURCE
R

CuuDuongThanCong.com

Vũ Tuyết Trinh

SOURCE
S

/>
4



Thiết kế và quản trị cơ sở dữ liệu

Mơ hình giá


Chí phí thực hiện câu hỏi phụ thuộc:
đọc/ghi bộ nhớ ngồi (số trang nhớ)
Kích thước dữ liệu phải xử lý


Chi

phí truy nhập dữ liệu
Đọc ghi dữ liệu
xử lý
Truyền thông giữa các trạm làm việc

CTA = s * NBPAGES + t * NBNUPLETS (+ m * NBMESSAGES)
Trọng

số
s = trọng số đọc/ghi dữ liệu (ví dụ = 1)
t = trọng số xử lý của CPU (ví dụ = 1/3)
m = trọng số truyền dữ liệu



Thơng tin về các quan hệ



Kích thước của các quan hệ và bản ghi
Relation
WAGON
TRAIN
TRAFFIC

Thông

CuuDuongThanCong.com

Cardinality
200000
200
5
400
2000
800

Size
20
5
15
15
10
6

min -max


5-45

tin về các chỉ số
Relation
WAGON
WAGON
WAGON
WAGON
TRAIN
TRAFFIC
TRAFFIC

Vũ Tuyết Trinh

Record size
60
30
20

tin về các thuộc tính
Attribute
NW
TYPE
COND
CAPACITY
NT
DATE

Thơng


Cardinality
200000
60000
80000

Attributes
NW
TYPE
COND
CAPACITY
NT
NT
DATE

Relation

Cardinality

WAGON
TRAIN
TRAFFIC

200000
60000
80000

Unique
Yes
No
No

No
No
No
no

Type
Principal
Secondary
Secondary
Secondary
Principal
Principal
Principal

Record size
(num of rec./page)
60(100)
30 (200)
20 (300)

Num of pages
45
25
30
25
18
20
40

Num. of pages

(NP’)
1500(375)
225(60)
200(60)

/>
5


Thiết kế và quản trị cơ sở dữ liệu

Tối ưu


Đặt vấn đề: Cho 1 câu truy vấn, các cây toán tử thực
thi nào sẽ được xem xét ?






Khơng gian tìm kiếm
Chiến lược tìm kiếm
Ước lượng giá cho các kế hoạch thực thi

Lý tưởng: tìm ra kế hoạch thực thi tốt nhất
Thực tế: Tránh kế hoạch thực thi tồi

Bộ tối ưu

Rewriter

Algebraic
Space

Cost Model
Planner

Method-Structure
Space

CuuDuongThanCong.com

Vũ Tuyết Trinh

Size-Distribution
Estimator

/>
6


Thiết kế và quản trị cơ sở dữ liệu

Query: R1

R2

R3


R4

Optimal Plan:

R5

R5
R1
R4

R3

Query: R1

R2

R2

R3

R4

Optimal Plan:

R5

R5
R1
R4


R3

R2

Optimal plan for
joining R3, R2, R4,
R1

Optimal plan for joining R3, R2, R4

CuuDuongThanCong.com

Vũ Tuyết Trinh

/>
7


Thiết kế và quản trị cơ sở dữ liệu

R1
R2

R2
R3

R3

R1


Sub-Optimal
for joining R1, R2, R3

Optimal
for joining R1, R2, R3

R2
Cây toán tử tối ưu

R4
R3

R1

{ R1, R2, R3, R4 }

Tiến trình tối ưu

{ R1, R2, R3 } { R1, R2, R4 } { R1, R3, R4 } { R2, R3, R4 }

{ R1, R2 } { R1, R3 } { R1, R4 } { R2, R3 } { R2, R4 } { R3, R4 }

{ R1 }

CuuDuongThanCong.com

Vũ Tuyết Trinh

{ R2 }


{ R3 }

{ R4 }

/>
8


Thiết kế và quản trị cơ sở dữ liệu

Các lý do dẫn đến hiệu năng thực
thi truy vấn chậm






Đòi hỏi nhiều phép truy nhập đĩa
Không sử dụng index
Cấu trúc CSDL khơng hợp lý
Các giao dịch dư thừa, lồng nhau


Ví dụ


Employee(ssnum, name, manager, dept, salary,
numfriends)






Student(ssnum, name, degree_sought, year)





CuuDuongThanCong.com

Clustering index :ssnum
Non clustering index :name

Tech(dept, manager, location)


Vũ Tuyết Trinh

Clustering index : ssnum
Non clustering indexes (i) name (ii) dept

Clustering index : dept

/>
9


Thiết kế và quản trị cơ sở dữ liệu


Các kỹ thuật viết lại truy vấn








Sử dụng Index
Loại bỏ DISTINCTs
Xem xét câu truy vấn lồng nhau
Điều kiện kết nối
Mệnh đề having
Sử dụng view
Khung nhìn lưu trữ (Materialized views)

Sử dụng Index


Một số trường hợp index khơng được sử
dụng


Biểu thức tốn học
WHERE salary/12 >= 4000;




Hàm tính tốn trên xâu
SELECT * FROM employee
WHERE SUBSTR(name, 1, 1) = „G‟;




CuuDuongThanCong.com

Vũ Tuyết Trinh

So sánh các trường không cùng kiểu
So sánh với giá trị rỗng

/>
10


Thiết kế và quản trị cơ sở dữ liệu

Hạn chế sử dụng DISTINCTs


Ví dụ
SELECT distinct ssnum
FROM employee
WHERE dept = „information systems‟




 có thể loại bỏ distinct

Hạn chế sử dụng DISTINCTs


Ví dụ
SELECT DISTINCT ssnum
FROM employee, tech
WHERE employee.dept = tech.dept



CuuDuongThanCong.com

Vũ Tuyết Trinh

Có cần sử dụng DISTINCT?

/>
11


Thiết kế và quản trị cơ sở dữ liệu

Employee(ssnum, name, manager, dept, salary, numfriends)
Student(ssnum, name, degree_sought, year)
Tech(dept, manager, location)


SELECT ssnum

FROM employee, tech
WHERE employee.manager = tech.manager



SELECT ssnum, tech.dept
FROM employee, tech
WHERE employee.manager = tech.manager



SELECT student.ssnum
FROM student, employee, tech
WHERE student.name = employee.name
AND employee.dept = tech.dept;
23

Truy vấn lồng nhau

CuuDuongThanCong.com

Vũ Tuyết Trinh



SELECT ssnum FROM employee
WHERE salary >
(select avg(salary)
from employee)




SELECT ssnum FROM employee
WHERE dept in (select dept from tech)



SELECT ssnum
FROM employee e1
WHERE salary =
(SELECT avg(e2.salary)
FROM employee e2,tech
WHERE e2.dept = e1.dept AND
e2.dept = tech.dept)

/>
12


Thiết kế và quản trị cơ sở dữ liệu

Viết lại truy vấn lồng nhau
SELECT ssnum
FROM employee
WHERE dept in (select dept
from tech)

SELECT ssnum
FROM employee, tech
WHERE employee.dept = tech.dept


Truy vấn lồng nhau với các phép
tốn tập hợp


Ví dụ






CuuDuongThanCong.com

Vũ Tuyết Trinh

SELECT avg(salary)
FROM employee
WHERE manager in (select manager from tech)
SELECT avg(salary)
FROM employee, tech
WHERE employee.manager = tech.manager

So sánh 2 câu truy vấn trên

/>
13


Thiết kế và quản trị cơ sở dữ liệu


Truy vấn lồng có kết nối


Ví dụ
SELECT ssnum
FROM employee e1
WHERE salary = (SELECT avg(e2.salary
FROM employee e2, tech
WHERE e2.dept = e1.dept
and e2.dept = tech.dept);




INSERT INTO temp
SELECT avg(salary) as avsalary, employee.dept
FROM employee, tech
WHERE employee.dept = tech.dept
GROUP BY employee.dept;



SELECT ssnum
FROM employee, temp
WHERE salary = avsalary
AND employee.dept = temp.dept

Employee(ssnum, name, manager, dept, salary, numfriends)
Student(ssnum, name, degree_sought, year)

Tech(dept, manager, location)
SELECT ssnum
FROM employee e1
WHERE numfriends = COUNT(SELECT e2.ssnum
FROM employee e2, tech
WHERE e2.dept = tech.dept

AND e2.dept = e1.dept);

CuuDuongThanCong.com

Vũ Tuyết Trinh



INSERT INTO temp
SELECT COUNT(ssnum) as numcolleagues,
employee.dept
FROM employee, tech
WHERE employee.dept = tech.dept
GROUP BY employee.dept;



SELECT ssnum
FROM employee, temp
WHERE numfriends = numcolleagues
AND employee.dept = temp.dept;

/>

14


Thiết kế và quản trị cơ sở dữ liệu

Điều kiện kết nối


Kết nối trên trường dữ liệu có clustering
indexes.



Kết nối trên trường dữ liệu kiểu số “tốt hơn” là
trên trường dữ liệu kiểu xâu ký tự

Sử dụng khung nhìn




CuuDuongThanCong.com

Vũ Tuyết Trinh

CREATE VIEW techlocation
AS
SELECT ssnum, tech.dept,
location
FROM employee, tech

WHERE
employee.dept =
tech.dept;
SELECT location
FROM techlocation
WHERE ssnum = 43253265;





SELECT location
FROM employee, tech
WHERE
employee.dept =
tech.dept
AND ssnum =
43253265;

/>
15


Thiết kế và quản trị cơ sở dữ liệu

Lưu trữ khung nhìn


Materialized views:
CREATE MATERIALIZED VIEW VendorOutstanding

BUILD IMMEDIATE
REFRESH COMPLETE
ENABLE QUERY REWRITE
AS
SELECT orders.vendor, sum(orders.quantity*item.price)
FROM orders,item
WHERE orders.itemnum = item.itemnum
group by orders.vendor;



Các tham số






BUILD immediate/deferred
REFRESH complete/fast
ENABLE QUERY REWRITE

Lợi ích:



Tự động cập nhật các dữ liệu tính tốn
Sử dụng bởi bộ tối ưu truy vấn

32


CuuDuongThanCong.com

Vũ Tuyết Trinh

/>
16



×