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 (545.94 KB, 7 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
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
<b>SQL </b>
<b>Phân tích </b>
<b>cú pháp </b>
<b>(</b><i><b>parser</b></i><b>) </b>
<b>Biểu thức </b>
<b>ĐSQH </b>
<b>Bộ tối ưu </b>
<b>(</b><i><b>optimizer</b></i><b>) </b>
<b>Biểu thức </b>
<b>ĐSQH </b>
<b>tối ưu </b>
<b>Bộ sinh mã </b>
<b>(code generator) </b>
WAGON (NW, TYPE, COND, STATION,
CAPACITY, WEIGHT)
TRAIN (NT, NW)
Cây toán tử logic
Thứ tự các phép toán
Cây toán tử vật lý
Các thuật toán thực thi phép toán
WAGON
(NW, TYPE...)
TRAIN
(NT, NW)
NW
NT = 4002
TYPE
Query Blocks
SELECT-FROM-
WHERE-GROUPBY-ORDERBY
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
Sort
Aggregates
Select
Project
Join
Nested Loop
Sort-Merge
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
Nguyên tắc
Đọc từng bản ghi của quan
hệ R (external relation) & lặp
trên quan hệ S (internal
relation)
Đặc điểm
one-and-haft pass,
non-blocking
Chi phí ?
<b>SOURCE </b>
<b>S</b>
<b>SOURCE </b>
<b>R</b>
<b>Tuple R</b>
<b>Tuple R</b>
<b>Tuple S</b>
<b>Matching</b>
Nguyên tắc
Sắp xếp dữ liệu đầu vào
trộn dữ liệu
Đặc điểm
two-pass, blocking algorithm
Chi phí?
<b>SOURCE </b>
<b>S</b>
<b>SOURCE </b>
<b>R</b>
<b>Merge</b>
Sort <sub>Sort </sub>
Nguyên tắc
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
Đặc điểm
two-pass, blocking algorithm
Chi phí ?
<b>SOURCE </b>
<b>S</b>
<b>R</b>
<b>Tuple R</b> <b>Tuple S</b>
<b>Hash Table R </b>
1 n
<b>Matching</b>
<i><b>hash(Tuple S) </b></i>
<i><b>hash(Tuple R) </b></i>
build
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
Kích thước của các quan hệ và bản ghi
Thơng tin về các thuộc tính
Thơng tin về các chỉ số
<b>Relation</b> <b>Cardinality </b> <b>Record size</b>
WAGON 200000 60
TRAIN 60000 30
TRAFFIC 80000 20
Attribute Cardinality Size min-max
NW 200000 20
TYPE 200 5
COND 5 15
CAPACITY 400 15 5-45
NT 2000 10
DATE 800 6
<b>Relation </b> <b>Attributes </b> <b>Unique </b> <b>Type </b> <b>Num of pages </b>
WAGON NW Yes Principal 45
WAGON TYPE No Secondary 25
WAGON COND No Secondary 30
WAGON CAPACITY No Secondary 25
TRAIN NT No Principal 18
TRAFFIC NT No Principal 20
TRAFFIC DATE no Principal 40
<b>Relation</b> <b>Cardinality</b> <b>Record size </b>
<b>(num of rec./page) </b>
<b>Num. of pages </b>
<b>(NP’)</b>
WAGON 200000 60(100) 1500(375)
TRAIN 60000 30 (200) 225(60)
Đặ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>Rewriter </b>
<b>Planner </b>
<b>Method-Structure </b>
<b>Space </b>
<b>Space </b>
Query: <i>R1 R2 R3 R4 R5 </i>
<i>R3 </i> <i>R2 </i>
<i>R4 </i>
<i>R1 </i>
<i>R5 </i>
Optimal Plan:
<i>R3 </i> <i>R2 </i>
<i>R4 </i>
<i>R1 </i>
<i>R5 </i>
Optimal Plan:
Optimal plan for joining <i>R3, R2, R4</i>
Query: <i>R1 R2 R3 R4 R5 </i>