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

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 42 - 44)

Ví dụ với các hàm giá cho các thuật toán chọn S1 đến S8 trong phần 1.2.2 dƣới dạng số hạng của các khối đƣợc đƣờng ống giữa bộ nhớ và đĩa. Các hàm giá ƣớc lƣợng bỏ qua thời gian tính toán, giá lƣu trữ, và các nhân tố khác. Giá cho phƣơng pháp Si đƣợc nói đến nhƣ số lần truy cập khối CSi

S1. Tìm kiếm tuyến tính: tìm tất cả các khối tệp để lấy ra toàn bộ các bản ghi thoả mãn điều kiện chọn; do đó, CS1a=b. Với một điều kiện bằng trên một khoá, giá trung bình để tìm kiếm bản ghi là một nửa tổng khối file, do đó CS1b=(b/2) nếu bản ghi đƣợc tìm thấy; nếu không bản ghi nào thoả mãn điều kiện thì CS1b=b

S2. Tìm kiếm nhị phân: Số lần truy cập xấp xỉ CS2= log2b + (s/bfr) - 1 khối file. CS2 giảm xuống log2b nếu điều kiện bằng trên một thuộc tính khoá, vì trong trƣờng hợp này s=1.

S3. Tìm kiếm sử dụng chỉ số sơ cấp (S3a) hoặc khoá băm (S3b) để lấy ra một bản ghi: Với một chỉ số sơ cấp thì sẽ lấy ra hơn một khối so với mức chỉ số; do đó CS3a=x+1. Đối với hàm băm, hàm giá xấp xỉ CS3b=1 nếu là băm tĩnh hoặc băm tuyến tính và CS3b=2 nếu là băm mở rộng.

S4. Sử dụng chỉ số thứ tự để lấy ra nhiều bản ghi: Nếu điều kiện so sánh là >, >=, < hoặc <= trên trƣờng khoá với một chỉ số thứ tự, thì một nửa bản ghi của file sẽ thoả mãn điều kiện. Từ đó có hàm giá là CS4= x + (b/2). Đây là một ƣớc lƣợng chƣa chặt chẽ, và mặc dù nó có thể đúng trên giá trị trung bình, nhƣng nó có thể rất thiếu chính xác trong các trƣờng hợp riêng biệt.

S5. Sử dụng chỉ số nhóm để lấy ra nhiều bản ghi: Giả định s bản ghi sẽ thoả mãn điều kiện với s là số các yếu tố chọn của thuộc tính chỉ số. Điều này có nghĩa là (s/bfr) khối file sẽ đƣợc truy nhập và đƣa ra hàm giá là CS5= x + (s/bfr).

S6. Sử dụng chỉ số thứ cấp (B+

tree): Trên một phép so sánh bằng, s bản ghi sẽ thoả mãn điều kiện đƣợc đƣa ra với s là yếu tố chọn của thuộc tính chỉ số. Tuy nhiên, vì chỉ số không là chỉ số cụm nên mỗi bản ghi có thể lƣu trữ trên những khối khác, do đó ƣớc lƣợng giá (trong trƣờng hợp xấu nhất) là CS6a=x+s. Ƣớc lƣợng này sẽ giảm còn x +1 nếu thuộc tính là chỉ số khoá. Nếu điều kiện so sánh là >, >=, < hoặc <=, và giả sử một nửa số bản ghi trong file thoả mãn điều kiện thì một nửa số khối đƣợc truy cập, cộng với một nửa số bản ghi đƣợc thông qua chỉ số. Ƣớc lƣợng giá trong trƣờng hợp này xấp xỉ là CS6b= x + (b11/2) + (r/2). Yếu tố r/2 có thể đƣợc cải tiến nếu các ƣớc lƣợng mức độ chọn tốt hơn sẵn sàng.

S7. Lựa chọn liên kết: sử dụng S1 hoặc là một trong những phƣơng pháp từ S2 đến S6 ở trên. Trong trƣờng hợp này, chỉ sử dụng một điều kiện để lấy ra các bản ghi và sau đó kiểm tra trong bộ đệm xem mỗi bản ghi đƣợc lấy ra có thoả mãn các điều kiện còn lại trong điều kiện liên kết hay không

S8. Lựa chọn kết hợp sử dụng chỉ số tổng hợp: giống nhƣ S3a, S5 hoặc S6a, phụ thuộc vào chỉ số. Ví dụ của việc sử dụng các hàm giá: trong một bộ tối ƣu truy vấn, phổ biến là liệt kê các chiến lƣợc có thể thực hiện khác nhau cho thực thi một truy vấn để ƣớc lƣợng giá cho từng chiến lƣợc. Giả sử file EMPLOYEE của bảng 1.1 ở trang 7 có rE=10000 bản ghi đƣợc lƣu trong bE=2000 khối đĩa với một khối là bfrE=5 bản ghi/khối và các đƣờng dẫn truy cập nhƣ sau:

1. Một chỉ số cụm trên SALARY, với mức xSALARY=3 và yếu tố chọn trung bình sSALARY=20.

2. Một chỉ số thứ cấp trên thuộc tính khoá SSN với xSSN= 4 (sSSN=1) 3. Một chỉ số thứ cấp trên thuộc tính không khoá DNO với xDNO=2 và các khối chỉ số mức 1 b11DNO=4. Có dDNO=125 các giá trị phân biệt đối với DNO, do đó yếu tố chọn trung bình của DNO là sDNO=(rE/dDNO)=80

4. Một chỉ số thứ cấp trên SEX, với xSEX=1. Có dSEX=2 giá trị cho thuộc tính giới tính, do đó yếu tố chọn trung bình là sSEX=(rE/dSEX)=5000

Sử dụng hàm giá với các ví dụ sau (OP1): SSN=‟123456789‟ (EMPLOYEE) (OP2): DNO>5 (EMPLOYEE)

(OP3): DNO=5 (EMPLOYEE)

(OP4): (DNO=5)AND (SALARY>3000)AND (SEX=‟F‟)(EMPLOYEE)

Giá của tìm kiếm tuyến tính S1 sẽ đƣợc ƣớc lƣợng là CS1a=bE=2000 (đối với một lựa chọn trên thuộc tính không phải là khoá) hoặc CS1b=(bE/2) =1000 (giá trung bình cho một lựa chọn trên thuộc tính khoá). Với OP1 chúng ta có thể sử dụng phƣơng thức S1 hoặc phƣơng thức S6a. Với OP2 có thể sử dụng cả phƣơng thức S1 (với giá đã đƣợc ƣớc lƣợng CS1a=2000) hoặc phƣơng thức S6b (với giá đã đƣợc ƣớc lƣợng CS6b=xDNO+(b11DNO/2)+(rE/2)=2 +(4/2) + (10000/2)=5004), do đó chọn cách tiếp cận tìm kiếm tuyến tính cho OP2. Đối với OP3 sử dụng phƣơng thức S1(với giá ƣớc lƣợng là CS1a=2000) hoặc phƣơg thức S6a (với giá ƣớc lƣợng CS6a=xDNO + SDNO=2+80=82), do đó chọn phƣơng thức S6a.

Cuối cùng, xem xét OP4, cần ƣớc lƣọng giá khi sử dụng bất kỳ 3 thành phần nào của điều kiện chọn để lấy ra các bản ghi cộng với cách tiếp cận tìm kiếm tuyến tính. Sau đó đƣa ra ƣớc lƣợng giá CS1a=2000. Sử dụng điều kiện (DNO=5) thì ƣớc lƣợng giá CS6a=82. Sử dụng điều kiện (SALARY>30000) sẽ đƣa ra ƣớc lƣợng giá CS4=xSALARY+(bE/2)=3+(2000/2)=1003. Sử dụng điều kiện (SEX=‟F‟) thì đƣa ra một ƣớc lƣợng giá CS6a=xSEX + sSEX=1+5000=5001. Bộ tối ƣu sẽ chọn phƣơng thức S6a trên chỉ số thứ cấp với DNO bởi vì nó có ƣớc lƣợng giá thấp nhất. Điều kiện (DNO=5) sẽ đƣợc sử dụng để lấy ra các bản ghi, và phần còn lại của điều kiện liên kết (SALARY>30000 AND SEX=‟F‟) đƣợc kiểm tra cho từng bản ghi đƣợc chọn sau khi nó đƣợc lấy ra từ bộ nhớ.

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 42 - 44)