Tăng tốc xử lý truy vấn nhờ AHYPERF [12]

Một phần của tài liệu Cơ sở dữ liệu phân tán và tối ưu hoá vấn tin (Trang 116)

Như đã đề cập ở các phần trước vấn đề tối ưu hóa truy vấn được chú trọng đến nhiều trong quá trình xử lý truy vấn, đã có nhiều nghiên cứu theo các hướng khác nhau, nhưng nhìn chung các kỹ thuật tập trung vào hai hướng chính:

1. Giảm thiểu chi phí cho việc truyền dữ liệu trên mạng bàng cách rút gọn lượng thông tin phải truyền.

2. Tối thiểu thời gian đáp ứng truy vấn bằng các kỹ thuật xử lý song song. Một trong những cách tiếp cận như vậy đã được đưa ra trong chương hai, thuật toán AHY được trình bày bởi Apers, Hevner và Yao.

Sau này cũng có nhiều đề xuất mới, trong đó có một kỹ thuật dựa trên nối nửa sử dụng bit-vector nhằm cực tiểu chi phí của bước “ngược” (backward phase) trong nối hai chiều 2SJ (two-way-semijoin)[10], [11] được gọi là PERF (Partially Encoded Record Filter) được trình bày bởi Kenneth Ross [11].

Ở phần này, một cải tiến của AHY sử dụng nối PERF gọi là AHYPERF được nghiên cứu bởi Ramzi A. Haraty và Roula C.Fany [12] nhằm tăng tốc xử lý truy vấn trong CSDL PT sẽđược trình bày.

3.2.5.1 Thuật toán AHYPERF

Xét hai quan hệ R và S,

Tư tưởng PERF được thực hiện theo các bước chính sau đây: 1. Chiếu quan hệ R trên thuộc tính nối X, thu được ΠX(R). 2. Chuyển ΠX(R) tới trạm chứa S.

3. Rút gọn quan hệ S bằng cách thực hiện nối nửa với ΠX(R), thu được S’. 4. Gửi bit-vector (PERF) ngược lại trạm chứa R, thay vì gửi cả S’.

Bước thứ 4 là bước “ngược”, trong đó bit-vector (PERF) chứa 1 bit tương ứng với một bộ trong R, bit này được gán bằng 1 nếu nó có trong ΠX(S') và 0 nếu ngược lại (ΠX(S') là kết quả thu được bởi phép chiếu S’ trên thuộc tính nối X). Trong đại đa số các trường hợp PERF có kích thước nhỏđáng kể so với ΠX(S').

Thí dụ 3.5:

Xét 2 quan hệ R(A,X) và S(X,B), trong ví dụ dưới đây bộ thứ 5 trong bit-vector PERF(R) chỉ rằng bộ thứ 5 của R sẽ tham gia trong phép nối , PERF(R) và PERF(S) sẽ rút gọn R><S.

Hình 3. 17 PERF của R và S

PERF được thiết kếđể làm cực tiêu chi phí của bước “ngược”, như vậy chi phí của bước 2 là bước “xuôi” (forward) sẽ lớn hơn bước ngược”.

Khi sử dụng PERF với thuật toán AHY thì các bước sau được thực hiện: 1. Thực hiện tất cả các xử lý cục bộ ban đầu.

2. Tạo ra các lich trình ứng cử (candidate schedules) bằng cách cô lập các thuộc tính nối và tạo ra câu truy vấn đơn.

3. For mỗi quan hệ Ri

a. Sử dụng thuật toán SERIAL_PERF và tạo lịch trình ứng cử.

b. Sử dụng thủ tục TOTAL_PERF để tích hợp các lịch trình thích hợp.

™ Thuật toán SERIAL_PERF

1. Sắp xếp các quan hệ Ri sao cho size(R1)≤size(R2)≤...≤size(Rn)

2. if nếu không có quan hệ nào nằm trên trạm kết quảthen chọn chiến lược sau:

→ → →

R Rn

R1 2 ... trạm kết quả

Else if Rr nằm trên trạm kết quảthen chọn một trong 2 phương án sau:

r n r R R R R R1 → 2 →...→ →...→ →

Hoặc R1 →R2 →...→Rr−1 →Rr+1...→RnRrsao cho có chi phí nhỏ nhất

3. Xây dựng PERF list sao cho PERFRiRi+1jđược gán bằng 1 khi việc truyền được thực hiện từ trạm chứa Ri tới Ri+1 trên thuộc tính nối j.

4. Tính toán chi phí truyền If PERFRiRi+1j=1 then 0 cost = Else 8 / ) ( cost =C0 +C1∗bk + bk ∗ρ(i+1)k

Với C0 +C1∗bk là hàm tuyến tính của chi phí truyền, C1 là chí cố định cho việc truyền 1 byte, bk là kích thước của quan hệ thu được khi chiếu trên thuộc tính nối (byte), chi phí này được gọi là chi phí của bước “xuôi”.

8 / )

(bk∗ρ(i+1)k là chi phí của bước “ngược” 5. Chọn chiến lược có chi phí thấp nhất

™ Thuật toán TOTAL_PERF

1. Bổ sung lịch trình ứng cử: với mỗi quan hệ và lịch trình ứng cử, nếu lịch trình chứa việc truyền dữ liệu của thuộc tính nối của quan hệ thì bổ sung một lịch trình khác tương tự nhưng không có việc truyền dữ liệu của thuộc tính nối của quan hệ

2. Tính toán chi phí của lịch trình mới bổ sung, tương tự như trong bước 4 của SERIAL_PERF

3. Chọn ứng cử viên tốt nhất nhằm cực tiểu tổng thời gian truyền của mỗi thuộc tính nối.

4. Cập nhật danh sách PERF (PERF list): gán giá trị bằng 1 cho tất cả các lịch trình đã truyền dữ liệu trong BESTij đã chọn.

5. Sắp xếp lịch trình ứng cử: với mỗi quan hệ Ri, sắp xếp lịch trình ứng cử

ij

BEST trên thuộc tính nối dij sao cho:

) ( ... ) ( 1 1 1 i iσ i iσ i C s SLT ART C s SLT ART + ∗ ≤ ≤ + ∗ Trong đó:

ART là thời gian trở về (arrival time) của lịch trình tốt nhất

SLT là độ chọn tích lũy của thuộc tính của lịch trình tốt nhất

s là độ chọn của quan hệ tương ứng.

6. Tích hợp lịch trình: với mỗi BESTij xây dựng một lịch trình tích hợp đối với

i

R gồm truyền song song BESTij và tất cả BESTik với k< j.

Phiên bản PERF của thuật toán AHY không loại trừ việc truyền dư thừa từ các lịch trình, nhưng nó làm cho chi phí của nó bằng 0 khi việc đó xảy ra, bằng cách bổ sung thêm vào tổng chi phí truyền một chi phí “ngược” nhỏ. Nếu việc truyền đã được thực hiện từ trạm A tới trạm B, sử dụng thuộc tính nối j, thì mọi thao tác truyền từ B tới A cũng sử dụng j sẽ có chi phí bằng 0. Từ việc đó nối PERF có thể coi là hàm không dư thừa đối xứng (non-redundant symmetric function), với tính chất này cho phép chúng ta cải tiến thuật toán AHY GENERAL truyền thống.

3.2.5.2 Ví dụ so sánh

Xét truy vấn: liệt kê danh sách số hiệu sản phẩm, tên sản phẩm và toàn bộ số lượng các phụ kiện đang trong đơn hàng được cung cấp bởi các nhà cung cấp đang cung cấp linh kiện cho các công việc có mã 10 hoặc 20.

CSDL chứa các quan hệ như sau:

PARTS(P#,PNAME), chứa mã số và tên linh kiện

ON_ORDER(S#,P#,QTY), chứa mã số nhà cung cấp, mã số linh kiện và số lượng trên đơn hàng.

S_P_J(S#,P#,J#), chứa mã số nhà cung cấp, cung cấp linh P# cho công việc có mã số J#.

Các quan hệ này được lưu tại các trạm khác nhau, hai thuộc tính nối là P# và S#. Hàm chi phí tính theo công thức sau: C(X)= 20 + X, đây là hàm tuyến tính dưới dạng y= aX + b, với:

a là chi phí truyền của mỗi byte

b là chi phí cốđịnh phụ thuộc vào từng mạng, trong trường hợp này b=20 Kích thước và độ chọn của các quan hệđược đưa ra trong hình sau:

di1=P# di2=S# Ri |Ri| size(Ri) bi1 ρi1 bi2 ρi2 R1 70 1000 400 0.4 100 0.2 R2 140 2000 400 0.4 450 0.9 R3 150 3000 900 0.4 - - Hình 3. 18 Mô tả quan hệ

|Ri| lực lượng của quan hệ (tính theo bộ)

ij

d thuộc tính nối

ij

b độ lớn thuộc tính nối (tính bằng byte) trong quan hệ tương ứng

ij

ρ với mỗi thuộc tính nối có độ chọn tương ứng

Sau khi khởi tạo, áp dụng AHYPERF cho truy vấn này, các truy vấn đơn sau được tạo thành trên các thuộc tính di1 và di2. Các lịch trình ứng cử nối tiếp được tạo thành như sau:

Với di2: d12 120 C(100) d12 d22 120 C(100) d12 110 C(0.2*450) d22

Xây dựng lịch trình cho mỗi quan hệ.

Với R1

Với thuộc tính d11 những lịch trình sau được bổ sung (bằng cách xóa bỏ việc truyền 11 d khỏi các lịch trình d21 và d31 ) d’21 420 C(400) d’31 380 C(0.4*900) d31 436 C(400+140*0.9/8) d21 d21 Với các lịch trình của d11 được áp dụng cho R1 ta có: Tổng thời gian=C(400+70*0.4/8) + C(0.4*400) + C(0.4*1000)=1024 Tổng thời gian= C(400+70*0.4/8) + C(0.4*400+140*0.9/8) + C(0.4*0.4*900) + C(0.4*0.9*1000)=1164 Tổng thời gian= C(400 +140*0.4/8) + C(0.4*1000)= 847 Tổng thời gian= C(400+140*0.9/8) + C(0.4*900+150*0.4/8) + C(0.4*0.9*1000)= 1204

Rõ ràng chúng ta thấy d21' là BEST11 với thời gian là 847

Với thuộc tính d12 lịch trình sau được bổ sung

Với các lịch trình của d12 được áp dụng cho R1 ta có: Tổng thời gian= C(100+70*0.9/8) + C(0.2*450+140*0.2/8) + C(0.9*1000)= 1162 d’22 474 d22 R1 920 Tổng thời gian= C(450+140*0.2/8) + C(0.9*1000)= 1394 Như vậy BEST12 là d22 với thời gian là 1162. Cuối cùng, với R1 chúng ta se chọn 11

BEST với thời gian là 847, ở bước này PERF2−1,1 =1 và PERF1−2,1 =1

Với R2

Với thuộc tính d11

Khi áp dụng mỗi lịch trình của d11 cho R2 ta có:

Tổng thời gian= 0 + C(0.4*400) + C(0.4*2000)= 1000

Lưu ý rằng PERF1−2,1 =1 nên việc truyền từ 1 sang 2 của thuộc tính 1 sẽ bằng 0

d31 0 d11 0 187 d21 d31 R2 740 Tổng thời gian= 0 + C(0.4*400+140*0.4*0.9/8) + 0 + C(0.4*0.9*2000)= 927

Tổng thời gian= C(400+140*0.4/8) + C(0.4*2000)= 1247

Tổng thời gian= C(400+70*0.9/8) + C(0.4*900+150*0.4*0.9/8) + C(0.4*0.9*2000)= 1555

Rõ ràng BEST21 là d31 với tổng thời gian là 927 và BEST22 là ' 22

d với thời gian là 1948. Và ta sẽ chọn d31 cho R2. Như vậy PERF2−3,1 =1 và PERF3−2,1 =1.

Tương tự với R3 ta có BEST31 với tổng thời gian là 740. Như vậy ta có tổng thời gian tối ưu là: 847+927+740=2514.

Như vậy ta có tỷ lệ so sánh giữa AHY và AHYPERF như sau:

AHY AHYPERF AHY C C C )/ ( − =12.7% 3.2.5.3 Một số kết quả thực nghiệm [12]

Nhóm tác giảđã xây dựng một chương trình bằng C++ chạy trên nền Windows với nhiều kịch bản khác nhau, và cho ra các kết quả như dưới đây. Trong đó cột TYPE cho ta biết số quan hệ, và số thuộc tính nối lớn nhất tham gia nối. Trong trường hợp chưa tối ưu, thì toàn bộ dữ liệu được truyền từ trạm này đến trạm khác.

Kịch bản 1: kích thước mỗi thuộc tính bằng 1 byte

TYPE Unoptimized AHY AHYPERF 2-2 15166.54 11281.77 10244.36 2-3 20176.99 12514.91 11210.69 2-4 25324.95 13195.31 11518.01 3-2 20675.39 15610.47 14097.76 3-3 25983.89 16727.14 15110.53 3-4 30977.84 17211.87 15422.78 4-2 26656.58 18105.75 16167.82 4-3 33149.04 20203.26 18039.28 4-4 39281.91 21067.12 18746.14 5-2 32613.54 19919.32 17448.54 5-3 41224.43 22975.32 20212.85 5-4 48771.57 24180.39 21166.99 TB 30000.22 17749.39 15782.15

0 10000 20000 30000 40000 50000 60000 2-2 2-3 2-4 3-2 3-3 3-4 4-2 4-3 4-4 5-2 5-3 5-4 Unoptimized AHY AHYPERF

Kịch bản 2: Kích thước mỗi thuộc tính bằng 5 byte

TYPE Unoptimized AHY AHYPERF 2-2 77094.85 57045.23 51343.36 2-3 100824.51 61996.65 54589.02 2-4 128113.97 66652.65 57004.79 3-2 102374.75 77600.45 69121.66 3-3 126861.52 83015.71 73938.19 3-4 154160.29 85602.33 75057.11 4-2 133156.13 91216.04 79985.85 4-3 165297.06 101571.73 89211.25 4-4 194790.69 105177.11 91628.56 5-2 162878.19 100808.91 85699.6 5-3 204638.73 114924.46 98263.82 5-4 244435.78 121233.3 103244.1 TB 149552.2 88903.71 77423.94 0 50000 100000 150000 200000 250000 300000 2-2 2-3 2-4 3-2 3-3 3-4 4-2 4-3 4-4 5-2 5-3 5-4 Unoptimized AHY AHYPERF

Kịch bản 3: kích thước mỗi thuộc tính bằng 50 byte.

TYPE Unoptimized AHY AHYPERF 2-2 774307.23 571559.9 512075.76 2-3 1025722.9 631131.25 553042.67 2-4 1286922.7 654111.03 555093.58 3-2 1034533.1 782855.95 695615.08 3-3 1272349.4 814956.83 719179.11 3-4 1558745 870137.82 758737.1 4-2 1343785.1 919758.2 800893.21 4-3 1636465.9 1007484 882273.47 4-4 1954307.2 1056676.8 914048.56 5-2 1622776.1 1005206.8 849381.99 5-3 2025497 1142050.7 975639.24 5-4 2471104.4 1227620.7 1041665.4 TB 1500543 890295.84 771470.43

0 500000 1000000 1500000 2000000 2500000 3000000 2-2 2-3 2-4 3-2 3-3 3-4 4-2 4-3 4-4 5-2 5-3 5-4 Unoptimized AHY AHYPERF Nhận xét:

Nhìn chung khi áp dụng PERF vào AHY, nó không làm tăng độ phức tạp thuật toán [12], phần tính toán bổ sung chỉ là việc duy trì danh sách PERF, trong trường hợp này danh sách PERF là mảng ba chiều. Và không hề mất tính tổng quát AHYPERF không phức tạp hơn Om2), trong đó σ là số các câu truy vấn đơn khác nhau, m

là số quan hệ trong truy vấn.

Dựa trên các kết quả thực nghiệm ta thấy rằng AHYPERF luôn thực hiện tốt hơn so với phiên bản AHY ban đầu.

KẾT LUẬN

Luận văn đã trình bày một cách hệ thống và tương đối đầy đủ một số nội dung sau:

™ Một số nguyên lý chúng của tối ưu hóa câu truy vấn bao gồm: các chiến lược tối ưu tổng quát, các kỹ thuật tối ưu hóa câu truy vấn (cơ bản là sắp thứ tự các phép toán trong biểu thức đại số quan hệ và phân rã câu truy vấn ban đầu thành các truy vấn con).

™ Đánh giá các câu truy vấn trong CSDL phân tán bao gồm: phân rã câu truy vấn, định vị dữ liệu và tối ưu truy vấn phân tán.

™ Các kỹ thuật và thuật toán tối ưu hóa câu truy vấn được sử dụng trong một số hệ quản trị CSDL phân tán hiện hành.

Một số hướng phát triển của đề tài:

™ Nghiên cứu, và phân tích sâu sắc các phương án kết hợp giữa nối và nối nửa cũng như các heuristic nhằm áp dụng một cách có hiệu quả trong từng trường hợp, để có thể đưa các nghiên cứu về mặt lý thuyết vào ứng dụng trong các hoạt động tác nghiệp (như lựa chọn được các giải pháp xử lý truy vấn phân tán trong các hệ quản trị CSDL PT…)

™ Nghiên cứu và phân tích kỹ cách tiếp cận của mô hình xác xuất trong việc xác định kích thước của danh sách tìm về (fetch-list size) trong việc ứng dụng mô hình đồ thịđể tối ưu hóa việc truy xuất CSDL khi xử lý nối.

™ Nghiên cứu sâu hơn về thuật toán AHYPERF để có thể ứng dụng vào môi trường thực tế.

TÀI LIỆU THAM KHẢO

[1] Nguyễn Bá Tường (2001), CƠ SỞ DỮ LIỆU Lý thuyết và thực hành, NXB Khoa học và kỹ thuật.

[2] Lê Tiến Vương (1996), Nhập môn CƠ SỞ DỮ LIỆU QUAN HỆ, NXB Khoa học và kỹ thuật.

[3] Hồ Thuần, Hồ Cẩm Hà (2004, 2005), Các hệ CƠ SỞ DỮ LIỆU lý thuyết và thực hành, tập 1,2, NXB Giáo dục

[4] Jeffrey D. Ulman, biên dịch Trần Đức Quang (2002), Nguyên lý các hệ CƠ SỞ

DỮ LIỆU và CƠ SỞ TRI THỨC, tập I và II, NXB Thống kê.

[5]Kenneth H. Rosen, người dịch: Phạm Văn Thiều, Đặng Hữu Thịnh (1998), Toán rời rạc Ứng dụng trong tin học, NXB Khoa học và kỹ thuật.

[6] M. Tamer Ozsu, Patrick Valduriez, biên dịch Trần Đức Quang (1999), Nguyên lý các hệ CƠ SỞ DỮ LIỆU phân tán, tập I, NXB Thống kê.

[7] Clement T.Yu, Weiyi Meng (1998), Principles of Database Query Processing for Advanced Applications, Morgan Kaufmann Publishers, Inc.

[8] Ramez Elmasri, Shamkant Navathe (2002), Fundamentals of Database Systems, 3rd Edition.

[9] Sakti Pramanik, David Ittiner (1985), Use of Graph-Theoretic Models for Optimal Relational Database Accesses to Perform Join, pages 57-76 , ACM Transaction on Database Systems.

[10] Zhe Li, Kenneth A. Ross (1994), Better Semijoin Using Tuple Bit-Vectors, Technical Report No. CUCS-010-94.

[11] Zhe Li, Kenneth A. Ross (1995), PERF Join: An Alternative To Two-way Semijoin And Bloomjoin, Department of Computer Science, Columbia University, New York.

[12] Ramzi A. Haraty, Roula C.Fany (2001), Query Acceleration in Distributed Database Systems, Colombian Journal of Computation. Volume 2, Number 1.

Một phần của tài liệu Cơ sở dữ liệu phân tán và tối ưu hoá vấn tin (Trang 116)