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

Bài giảng Thiết kế và quản trị cơ sở dữ liệu - Chương 4: Xử lý truy vấn và hiệu năng hệ CSDL

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>

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


<b>Câu lệnh </b>


<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>



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Cây toán tử



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


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



 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


Thuật toán



 Sort


 Aggregates


 Select


 Project


 Join


Nested Loop



Sort-Merge


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

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 toán nhiều pha:



Nested-Loops Join



 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>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Sort Merge Join



 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>


Hash Join (HJ)



 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>SOURCE </b>


<b>R</b>


<b>Tuple R</b> <b>Tuple S</b>
<b>Hash Table R </b>


<b>… </b>



1 n


<b>Matching</b>


<i><b>hash(Tuple S) </b></i>
<i><b>hash(Tuple R) </b></i>


build


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

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


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)


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

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



<b>Rewriter </b>


<b>Planner </b>
<b>Method-Structure </b>


<b>Space </b>


<b>Algebraic </b>


<b>Space </b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

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>


</div>

<!--links-->

×