Ví dụ của các hàm giá đối với phép JOIN

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 44 - 47)

Để phát triển các hàm giá chính xác hợp lý cho các phép JOIN, cần phải có một ƣớc lƣợng đối với kích thƣớc (số bộ giá trị) của file kết quả. Đó

là tỉ lệ kích thƣớc của file kết quả sau phép JOIN với kích thƣớc của file sau khi thực hiện phép CARTESIAN PRODUCT, nếu cả 2 phép toán đƣợc áp dụng với cùng các file đầu vào, và nó đƣợc gọi là độ chọn lọc nối (js). Số bộ giá trị của một quan hệ R là |R| thì:

js=|(R C S)|/|(R x S)| = |((R C S)|/(|R|*|S|)

Nếu không có điều kiện nối c thì js=1 và phép JOIN giống nhƣ phép CARTESIAN PRODUCT. Nếu không bộ giá trị nào từ các quan hệ thoả mãn điều kiện nối thì js=0. Tổng quát: 0  js  1. Đối với một phép nối trong đó điều kiện c là một phép so sánh bằng R.A=S.B có 2 trƣờng hợp đặc biệt sau [5, 9]:

1. Nếu A là một khoá của R thì |(R C S)|  |S|, do đó js  (1/|R|) 2. Nếu B là một khoá của S thì |(R C S)|  |R|, do đó js  (1/|S|) Ƣớc lƣợng độ chọn lọc nối đối với các điều kiện nối cho phép bộ tối ƣu truy vấn ƣớc lƣợng kích thƣớc của file kết quả sau khi nối và đƣa ra kích thƣớc của 2 file đầu vào bằng việc sử dụng công thức |(R C S)| = js * |R| * |S|.

Các phép nối có dạng: R A=B S

Với A và B là các thuộc tính có miền tƣơng ứng của R và S. Giả sử R có bR khối và S có bS khối, khi đó [6, 9]:

J1. Nối lặp lồng nhau: sử dụng R cho vòng lặp ngoài. Sau đó sử dụng hàm giá để ƣớc lƣợng số lần truy cập khối đối với phƣơng thức này, giả thiết là ba vùng nhớ đệm. Giả sử nhân tố khối cho file kết quả bfrRS và kết quả là:

CJ1=bR + (bR * bS)+ ((js * |R| * |S|)/bfrRS)

J2. Nối lặp đơn: Nếu một chỉ số tồn tại đối với thuộc tính nối B của S với mức chỉ số xB, thì có thể lấy ra từng bản ghi s trong R và sau đó sử dụng chỉ số để lấy ra toàn bộ các bản ghi tƣơng ứng t từ S thoả mãn t[B] =s[A]. Giá cho phƣơng pháp phụ thuộc vào loại chỉ số. Đối với chỉ số thứ cấp, sB là yếu tố chọn cho các thuộc tính nối B của S. Kết quả thu đƣợc:

CJ2a=bR + (|R| * (xB + sB)) + ((js * |R| * |S|)/bfrRS)

Đối với chỉ số cụm, nếu sB là yếu tố chọn của B thì thu đƣợc CJ2b=bR + (|R| * (xB + (sB/bfrRB))) + ((js * |R| * |S|)/bfrRS) Đối với một chỉ số sơ cấp thu đƣợc

CJ2c=bR + (|R| * (xB + 1)) + ((js * |R| * |S|)/bfrRS)

Nếu một khoá băm tồn tại đối với một trong 2 thuộc tính nối, ví dụ nhƣ thuộc tính B của S, thu đƣợc

CJ2d=bR + (|R| * h) + ((js * |R| * |S|)/bfrRS)

Với h  1 là số lần truy cập khối trung bình để lấy ra một bản ghi và đƣợc đƣa ra trong giá trị khoá băm của nó

J3. Sắp xếp trộn: Nếu các file đã đƣợc sắp xếp trên các thuộc tính nối, ƣớc lƣợng giá cho phƣơng thức này là:

CJ3a=bR + bS + ((js * |R| * |S|)/bfrRS)

Nếu phải sắp xếp các file thì giá của việc sắp xếp phải đƣợc tính đến. Giá sắp xếp xấp xỉ (2*b)+ (2*b*log2b) đối với một file có b khối. Do đó thu đƣợc hàm giá:

CJ3b=(2*bR*(1+log2bR)) + (2 * bS* (1+ log2bS)) + bR + bS + (js * |R| * |S|)/bfrRS)

Xét ví dụ của việc sử dụng các hàm giá. File EMPLOYEE và file DEPARTMENT bao gồm rD=125 bản ghi đƣợc lƣu trong bD=13 khối đĩa. Xem xét các phép nối sau:

(OP6): EMPLOYEE DNO=DNUMBER DEPARTMENT (OP7): DEPARTMENT MGRSSN=SSN EMPLOYEE

Giả sử có một chỉ số sơ cấp trên thuộc tính DNUMBER của DEPARTMENT với xDNUMBER=1 mức và một chỉ số thứ cấp trên MGRSSN của DEPARTMENT với yếu tố chọn sMGRSSN=1 và số mức là xMGRSSN=2, độ chọn nối của OP6 là jsOP6=(1/|DEPARTMENT|)=1/125 bởi vì DNUMBER là

một khoá của DEPARTMENT, nhân tố khối cho file kết quả bfrED=4 bản ghi/khối. Khi đó ƣớc lƣợng giá của phép JOIN trong OP6 sử dụng các phƣơng thức thích hợp J1 và J2 nhƣ sau:

1. Sử dụng phƣơng thức J1 với EMPLOYEE nhƣ vòng lặp ngoài CJ1 = bE +(bE*bD) +((jsOP6 * rE * rD)/bfrED)

= 2000 + (2000 *13) + (((1/125) * 10000 *125)/4) = 30500

2. Sử dụng phƣơng thức J1 với DEPARTMENT nhƣ vòng lặp ngoài

CJ1 = bD + (bE*bD)+ ((jsOP6 * rE * rD)/bfrED)

= 13 + (13 * 2000) +(((1/125) *10000 * 125)/4) = 28513

3. Sử dụng phƣơng thức J2 với EMPLOYEE nhƣ vòng lặp ngoài CJ2c = bE + (rE * (xDNUMBER+1)) + ((jsOP6 * rE * rD)/bfrED)

= 2000 + (10000 * 2) +(((1/125) *10000 * 125)/4) = 24500 (adsbygoogle = window.adsbygoogle || []).push({});

4. Sử dụng phƣơng thức J2 với DEPARTMENT nhƣ vòng lặp ngoài

CJ2a = bD +(rD*(xDNO+sDNO)) +((jsOP6 * rE * rD)/bfrED) = 13 + (125 * (2+80)) + (((1/125) * 10000 * 125)/4) = 12763

Trƣờng hợp 4 có ƣớc lƣợng giá thấp nhất và sẽ đƣợc chọn.

Một phần của tài liệu Xử lý truy vấn và quản lý giao tác trong cơ sở dữ liệu (Trang 44 - 47)