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

chương 6 tối ưu câu truy vấn

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 (2.99 MB, 52 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>Chương 6</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>1. Giới thiệu về xử lý truy vấn2. Qui tắc tối ưu cây truy vấn </b>

<b>3. Tối ưu hóa truy vấn trong môi trường tập trung</b>

<b>NỘI DUNG</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>1. Giới thiệu về xử lý truy vấn</b>

<b>NỘI DUNG</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

v <b>Chức năng của xử lý truy vấn:</b>

§ Biến đổi một truy vấn phức tạp thành một truy vấn tương đương đơn giản hơn.

§ Phép biến đổi này phải đạt được cả về tính đúng đắn và hiệu quả

§ Mỗi cách biến đổi dẫn đến việc sử dụng tài nguyên máy tính khác nhau,

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

v <b>Phương pháp biến đổi đại số</b>

§ Đơn giản hóa câu truy vấn nhờ các phép biến đổi đại số tương đương nhằm giảm thiểu thời gian thực hiện các phép tốn.

§ Phương pháp này khơng quan tâm đến kích thước và cấu trúc dữ liệu.

§ Xác định kích thước dữ liệu, thời gian thực hiện mỗi phép tốn trong câu truy vấn.

§ Phương pháp này quan tâm đến kích thước dữ liệu và phải tính tốn

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<small>Tối ưu hóa đại số quan hệ</small>

<i><small>Truy vấn đại số quan hệ đã tối ưu</small></i>

<small>Chọn chiến lược tối ưu</small>

<small>Tạo sinh mã</small>

<i><small>Kế hoạch thực hiện</small></i>

<i><b><small>Sơ đồ chung</small></b></i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>2. Qui tắc tối ưu cây truy vấn </b>

<b>NỘI DUNG</b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

R S =SR

(R S) T = R (S T) R x S = S x R

(R x S) x T = R x (S x T)R  S = S  R

R  (S  T) = (R  S)  T

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<sub>p</sub>

(R S) = [

<sub>p</sub>

(R)] SR [

<sub>q</sub>

<sub>(S)] </sub>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<small>l</small> Cho

<small>l</small> X = tập thuộc tính con của R

<small>l</small> Y = tập thuộc tính con của R

<small>l</small> Ta có

<small>l</small> XY = X  Y

<sub>XY</sub>

<sub>(R) = </sub>

<sub>X</sub>

<sub> [</sub>

<sub>Y</sub>

<sub> (R)]</sub>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<small>Pushing projections</small>

<small>l</small> Cho

<small>l</small> X = tập thuộc tính con của R

<small>l</small> Y = tập thuộc tính con của S

<small>l</small> Z = tập giao thuộc tính của R và S

<sub>XY</sub>

<sub>(R S) = </sub> 

<sub>XY</sub>

<sub>[ </sub> 

<sub>XZ</sub>

<sub>(R) </sub> 

<sub>YZ</sub>

<sub>(S)] </sub>

<small>Except intersection and difference</small>

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<small>l</small> Cho

<small>l</small> X = tập thuộc tính con của R

<small>l</small> Z = tập thuộc tính con của R xuất hiện trong vị từ p

<sub>X</sub>

<sub>[</sub>

<sub>p </sub>

<sub>(R)] = {</sub>

<sub>X</sub>

<sub>p </sub>

<sub>[</sub>

<sup></sup>

<sup>XZ</sup><sub>X</sub>

<sub> (R)]} </sub>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<small>l</small> Cho

<small>l</small> X = tập thuộc tính con của R

<small>l</small> Y = tập thuộc tính con của S

<small>l</small> Z = tập giao thuộc tính của R và S

<small>l</small> Z’ = Z  {các thuộc tính xuất hiện trong vị từ p}

<sub>XY</sub>

<sub>[</sub> 

<sub>p </sub>

<sub>(R S)] = </sub>

<sub>XY</sub>

<sub> {</sub>

<sub>p </sub>

<sub>[</sub>

<sub>XZ’</sub>

<sub> (R) </sub>

<sub>YZ’</sub>

<sub> (S)]} </sub>

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

<small>l</small> Bình thường

<small>l</small> Chiếu trước

<small>l</small> Nhưng

<small>l</small> Giả sử A và B được cài đặt chỉ mục (index)

<small>l</small> Physical query plan dùng chỉ mục để chọn ra những bộ có A=3 và B=‘a’ trước

<small>l</small> Nếu thực hiện chiếu trước <sub>AB</sub>(R) thì chỉ mục trên A và B là vơ ích

<small>l</small> Chọn trước

Thông thường chọn trước tốt hơn

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<sub>C</sub>

<sub> (R S) = R </sub>

<sub>C</sub>

<sub> S </sub>

R  S =

<sub>L</sub>

<sub> [</sub>

<sub>C</sub>

<sub> (R  S)]</sub>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<small>Customer.cusID=Account.cusID  balance=100CustomerAccount</small>

<small>x</small>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<small>Customer.cusID=Account.cusIDQui tắc </small>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<small>CustomerAccountCustomer.cusID=Account.cusIDQui tắc , </small>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<small>Customer.cusID=Account.cusIDPushing </small>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<small>cusNm, cusID</small>

<small>cusIDPushing </small>

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<b><small>QT1: Xử lý toán tử AND trong điều kiệnQT2: Thay đổi thứ tự của các phép chọnQT3: Xử lý các phép chiếu</small></b>

<small>Descartes, hội và giao</small>

<b><small>QT10: Phân phối của phép chọn đối với </small></b>

<small>các phép toán</small>

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>QT1: Xử lý toán tử AND trong điều kiện</b>

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<b>QT2: Thay đổi thứ tự của các phép chọn</b>

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<b>QT3: Xử lý các phép chiếu</b>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

<b>QT4: Thay đổi thứ tự các phép chọn và phép chiếu</b>

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

<b>QT5: Tính giao hốn của phép kết và tích Descartes</b>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<b>QT6a: Thay đổi thứ tự giữa phép chọn và phép kết</b>

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<b>QT6b: Phân phối giữa phép chọn và phép kết</b>

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

<b>QT7a: Thay đổi thứ tự giữa phép chiếu và phép kết</b>

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>QT7b: Phân phối giữa phép chiếu và phép kết</b>

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

<b>QT8: Giao hoán của phép hội và phép giao</b>

<b>QT9: Kết hợp giữa phép kết, tích Descartes, hội và giao</b>

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<b>QT10: Phân phối của phép chọn đối với các phép toán</b>

<b>QT11: Phân phối của phép chiếu đối với các phép toán</b>

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b>QT12: Chuyển các phép chọn, tích Descartes thành phép kết</b>

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

<b>3. Tối ưu hóa truy vấn trong mơi trường tập trung</b>

<b>NỘI DUNG</b>

</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">

1. Áp dụng QT1, tách các phép chọn liên tiếp thành 1 dãy các phép chọn.

2. Áp dụng QT2,4,6 và 10, để đẩy phép chọn xuống càng sâu càng tốt.

3. Áp dụng QT9 để 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.

4. Phối hợp tích Decartes với các phép chiếu thích hợp theo sau.

5. Áp dụng QT3, 4, 7 và 11 để đẩy phép chiếu xuống càng sâu càng tốt

(có thể phát sinh phép chiếu mới).

</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42">

<b><small>QT1: Xử lý toán tử AND trong điều kiệnQT2: Thay đổi thứ tự của các phép chọnQT3: Xử lý các phép chiếu</small></b>

<small>Descartes, hội và giao</small>

<b><small>QT10: Phân phối của phép chọn đối với </small></b>

<small>các phép toán</small>

<b><small>QT11: Phân phối của phép chiếu đối với </small></b>

<small>các phép toán</small>

<b><small>QT12: Chuyển các phép chọn, tích </small></b>

</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">

<b><small>NHANVIEN(manv, honv, tennv, ngaysinh,..)DEAN(mada, tenda,...)</small></b>

<b><small>THAMGIA(manv, mada, ...)</small></b>

</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">

v Cho biết một phần của lược đồ CSDL tồn cục của phịng khám ABC như sau:§ <b>PhongKham(MaPK, TenPK, DiaChi, Quan, DienThoai)</b>

§ <b>BenhNhan(MaBN, TenBN, NgaySinh, DiaChi, DienThoai, GioiTinh)</b>

§ <b>BacSy(MaBS, TenBS, TenDangNhap, MatKhau, MaCK)</b>

</div><span class="text_page_counter">Trang 52</span><div class="page_container" data-page="52">

v Hãy mơ tả tiến trình tối ưu hóa câu truy vấn sau:

<b><small>FROM</small></b><small> PhongKham PK, ChuyenKhoa CK, BenhNhan BN, KhamBenh KB, BacSy BS</small>

<small>AND BN.MaBN= KB.MaBN AND BS.MaBS = KB.MaBS AND NgayKham=’10/06/2018’ AND TenBN=’Nguyễn Văn A’AND BN.DienThoai = ‘0932345678’ AND Quan=’Quận 7’AND TenKhoa=’Khoa Nhi’</small>

</div>

×