Cỏc giai đoạn xử lý cõu truy vấn

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 66 - 106)

6. Cỏc kết quả dự kiến

2.7.3. Cỏc giai đoạn xử lý cõu truy vấn

Vấn đề xử lý cõu truy vấn được chia làm bốn giai đoạn sau [7]

Hỡnh 2.19: Sơ đồ phõn lớp cho việc xử lý truy vấn phõn tỏn

2.7.4. Tối ƣu hoỏ cỏc truy vấn phõn tỏn

Ta đó biết, một cõu truy vấn trong phộp tớnh quan hệ biểu diễn trờn cỏc quan hệ phõn tỏn cú thể được ỏnh xạ thành một cõu truy vấn trờn cỏc đoạn quan hệ

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

bằng cỏch phõn ró và định vị dữ liệụ ỏnh xạ này sử dụng lược đồ phõn đoạn. Trong xử lý này, việc ỏp dụng cỏc luật biến đổi cho phộp đơn giản hoỏ cõu truy vấn bằng cỏch tỡm cỏc biểu thức con chung và loại bỏ cỏc biểu thức vụ ớch. Cõu truy vấn thu được từ giai đoạn phõn ró và định vị dữ liệu cú thể được thực thi một cỏch đơn giản bằng việc thờm vào cỏc thao tỏc truyền thụng. Tuy nhiờn, hoỏn vị thứ tự cỏc phộp toỏn trong cõu truy vấn cú thể cung cấp nhiều chiến lược tương đương để thực thi chỳng. Tỡm một thứ tự “tối ưu” của cỏc phộp toỏn cho một cõu truy vấn đó cho là chức năng chớnh của bộ tối ưu hoỏ cõu truy vấn.

Sự lựa chọn thứ tự tối ưu đối với một cõu truy vấn là bài toỏn khú thực hiện nờn mục đớch thực sự của bộ tối ưu là tỡm một chiến lược gần tối ưụ Sau đõy ta sẽ gọi chiến lược (hoặc thao tỏc sắp thứ tự) được đưa ra bởi bộ tối ưu là chiến lược tối ưu (hoặc sắp chiến lược tối ưu). Đầu ra của bộ tối ưu là một lịch trỡnh được tối ưu bao gồm cõu truy vấn đại số được xỏc định trờn cỏc trạm.

Sự lựa chọn cỏc chiến lược tối ưu núi chung đũi hỏi dự đoỏn chi phớ thực hiện của cỏc cỏch sắp thứ tự cú thể cú trước khi thực hiện cõu truy vấn. Chi phớ thực hiện là tổ hợp cú trọng số của chi phớ truyền thụng, I/O, CPỤ Tuy nhiờn để đơn giản ta bỏ qua chi phớ xử lý địa phương (I/O, CPU), coi chi phớ truyền thụng là song yếụ Phần này chủ yếu tập trung vào việc sắp thứ tự cỏc phộp kết nối với hai lý do: Thứ nhất là bài toỏn đó được tỡm hiểu kỹ lưỡng, thứ hai là cỏc cõu truy vấn liờn quan đến phộp kết nối, chọn, chiếu được xem như kiểu thường gặp nhất. Hơn nữa, dễ dàng tổng quỏt hoỏ thuật toỏn cơ bản cho cỏc phộp toỏn hai ngụi khỏc, như phộp hợp. Ta cũng sẽ luận bàn xem cỏc phộp nửa kết nối cú thể hỗ trợ việc xử lý phộp kết nối một cỏch hiệu quả như thế nàọ

Trong phần này sẽ trỡnh bày cỏc vấn đề sau: đầu vào bộ tối ưu bao gồm mụ hỡnh chi phớ, cỏc thống kờ cơ sở dữ liệu, cỏc cụng thức để đỏnh giỏ kớch thước của cỏc kết quả trung gian; thứ tự kết nối trờn cỏc cõu truy vấn đoạn; cỏc thuật toỏn tối ưu hoỏ cõu truy vấn phõn tỏn.

2.7.4.1. Đầu vào bộ tối ưu hoỏ cõu truy vấn

2.7.4.1.1. Mụ hỡnh chi phớ

Chi phớ của một chiến lược thực hiện phõn tỏn cú thể được biểu diễn hoặc theo tổng chi phớ (total cost) hoặc theo thời gian trả lờị Tổng chi phớ là tổng của tất cả cỏc thành phần chi phớ, cũn thời gian trả lời tớnh từ lỳc bắt đầu đến lỳc kết thỳc cõu truy vấn. Cụng thức chung để tớnh tổng chi phớ như sau [7]:

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

Total_cost = CCPU*#insts + CI/O*#I/Os + CMSG #msgs + CTR*#bytes

Trong đú: Total_cost - là tổng chi phớ; CCPU - chi phớ của một lệnh CPU; CI/O- chi phớ của một truy xuất/nhập đĩa; CMSG - chi phớ cố định của việc khởi đầu và nhận một thụng bỏo; CTR - chi phớ truyền một đơn vị dữ liệu từ trạm này tới trạm khỏc, ta xem CTR là hằng số; #insts, #I/Os, #msgsm, #byte: Tương ứng là tổng trờn cỏc trạm của tất cả cỏc số lệnh CPU, số lần truy xuất/ nhập đĩa, số thụng bỏo, kớch thước của tất cả cỏc thụng bỏọ

Trong cụng thức trờn, hai thành phần chi phớ đầu là chi phớ địa phương, hai thành phần sau là chi phớ truyền thụng. Chi phớ truyền thụng để chuyển #bytes dữ liệu từ trạm này đến trạm khỏc được giả thiết là một hàm tuyến tớnh của #bytes.

CC(#bytes) = CMSG + CTR*#bytes

Chi phớ được biểu diễn theo đơn vị thời gian và từ đú cú thể chuyển qua cỏc đơn vị khỏc.

Cấu hỡnh của mạng ảnh hưởng lớn đến cỏc thành phần chi phớ. Trong một mạng diện rộng như ARPANET (10kbps), do truyền thụng chậm hơn xử lý địa phương nờn chi phớ truyền thụng là yếu tố trọng yếụ Tỷ lệ giữa chi phớ truyền thụng và chi phớ I/O cho một trạng thỏi nhớ khoảng 20:1 [7]. Do đú, hầu hết cỏc hệ quản trị cơ sở dữ liệu phõn tỏn được thiết kế cho mạng WAN bỏ qua chi phớ xử lý địa phương và tập trung vào tối thiểu hoỏ chi phớ truyền trụng. Trong một mạng cục bộ như Ethernet (10Mbps), chi phớ xử lý địa phương gúp phần đỏng kể vào tổng chi phớ. Tỷ lệ giữa chi phớ truyền thụng và chi phớ I/O là 1:1.6 [7]. Do đú, cỏc hệ quản trị cơ sở dữ liệu phõn tỏn được thiết kế cho mạng LAN coi như gồm cả ba thành phần chi phớ.

Khi thời gian trả lời của cõu truy vấn là hàm mục tiờu của bộ tối ưu thỡ cỏc xử lý địa phương song song và truyền thụng song song phải được xột. Cụng thức tổng quỏt tớnh thời gian trả lời (response time) là [7]:

Response_time = CCPU*seq_#insts + CI/O*seq_#I/Os + CMSG *seq_#msgs + CTR*seq_#bytes

Trong đú: seq_#x (x cú thể là cỏc lệnh CPU, I/O, cỏc thụng bỏo, cỏc byte) là số lớn nhất của x phải được thực hiện tuần tự đối với sự thực thi của cõu truy vấn. Như vậy cú thể bỏ qua bất kỳ xử lý và truyền thụng được thực hiện song song.

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

Vớ dụ 2.24: Minh hoạ sự khỏc nhau giữa tổng chi phớ và thời gian trả lời, trong đú mỏy tớnh trả lời cõu truy vấn tại trạm 3 với dữ liệu từ trạm 1 và trạm 2, ở đõy chi phớ truyền thụng được xột

Giả sử, CMSG và CTR được biểu thị theo đơn vị thời gian. Tổng chi phớ truyền x đơn vị dữ liệu từ trạm 1 đến 3 và y đơn vị dữ liệu từ trạm 2 đến trạm 3 là:

Total_cost = 2CMSG + CTR*(x+y)

Vỡ việc truyền dữ liệu cú thể thực hiện song song nờn thời gian trả lời cõu truy vấn là: Response_time = max{CMSG + CTR*x, CMSG + CTR*y}

Thời gian trả lời tối thiểu đạt được bằng cỏch tăng mức độ xử lý song song, tuy nhiờn khụng cú nghĩa tổng chi phớ là tối thiểụ Ngược lại, tổng chi phớ cú thể tăng khi cú nhiều xử lý địa phương và truyền song song hơn.

2.7.4.1.2 Cỏc thống kờ cơ sở dữ liệu

Yếu tố chớnh ảnh hưởng đến hiệu suất của một chiến lược thực thi là kớch thước của cỏc quan hệ trung gian sinh ra trong quỏ trỡnh thực hiện. Khi gặp phộp toỏn tiếp theo đặt tại một trạm khỏc, quan hệ trung gian phải được truyền lờn mạng. Do vậy, để tối thiểu hoỏ khối lượng dữ liệu truyền, điểm quan tõm đầu tiờn là đỏnh giỏ kớch thước kết quả trung gian của cỏc phộp toỏn đại số quan hệ. Đỏnh giỏ này dựa trờn cỏc thụng tin thống kờ về cỏc quan hệ cơ sở và cỏc cụng thức ước tớnh lực lượng của kết quả của cỏc ph p toỏn quan hệ. Quan hệ R xỏc định trờn A = {A1, A2,...,An} được phõn đoạn thành R1, R2,...,Rr. Khi đú dữ liệu thống kờ điển hỡnh bao gồm [7]:

1. Với mỗi thuộc tớnh Ai, độ dài của Ai ký hiệu là length(Ai); với mỗi Ai Rj, lực lượng của phộp chiếu của đoạn Rj trờn Ai ký hiệu là card(Ai(Rj))

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

(số giỏ trị phõn biệt trờn mỗi thuộc tớnh).

2. Miền xỏc định của Ai là tập số nguyờn hoặc tập số thực, cú max(Ai) và min(Ai).

3. Lực lượng của miền Ai kớ hiệu là card(dom[Ai]), đú là số cỏc giỏ trị duy nhất trờn mỗi miền trị của thuộc tớnh Ai.

4. Số cỏc bộ trong mỗi đoạn Rj ký hiệu là card(Rj) Ngoài ra, dữ liệu thống kờ cũng bao gồm hệ số chọn của phộp kết nối (SFJ) đối với số cặp quan hệ; hệ số SFJ của quan hệ R và S là một số thực giữa 0 và 1:

Hệ số SFJ nhỏ thỡ phộp kết nối cú tớnh chọn tốt, ngược lại cú tớnh chọn tồị Cỏc thống kờ này cú lợi để đỏnh giỏ kớch thước của cỏc quan hệ trung gian. Kớch thước của một quan hệ trung gian R như sau:

Size(R)= card(R)*length(R)

Trong đú: card(R) là số cỏc bộ của R được tớnh theo cỏc cụng thức ở phần saụ

2.7.4.1.3. Lực lượng của cỏc kết quả trung gian

Phần này sẽ đưa ra cỏc cụng thức để ước tớnh lực lượng của kết quả của cỏc phộp toỏn cơ sở của đaị số quan hệ (phộp chọn, phộp chiếu, phộp tớch Decartes, kết nối, nửa kết nối, phộp hợp và phộp trừ). Cỏc toỏn hạng quan hệ được ký hiệu bởi R và S. Hệ số chọn của một phộp toỏn (SFOP, OP biểu thị phộp toỏn) là tỷ lệ giữa cỏc bộ của một toỏn hạng quan hệ tham gia vào kết quả của phộp toỏn.

Phộp chọn:

Card(sF(R)) = SFS(F) * card(R)

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

SFS(p(Ai)p(Aj))= SFS(p(Ai)) * SFS(p(Aj))

SFS(p(Ai)p(Aj))= SFS(p(Ai)) + SFS(p(Aj)) - SFS(p(Ai)) * SFS(p(Aj)) SFS(A{values}) = SFS(A=values) * card({values})

Trong đú: p(Ai), p(Aj) là cỏc tõn từ tương ứng trờn cỏc thuộc tớnh Ai, Aj

Phộp chiếu:

Phộp chiếu cú thể cú hoặc khụng loại bỏ bản sao, ở đõy chỉ xột phộp chiếu loại bỏ bản saọ Lực lượng quan hệ kết quả của một phộp chiếu tuỳ ý là khú đỏnh giỏ chớnh xỏc, vỡ tương quan giữa cỏc thuộc tớnh chiếu là thường khụng biết. Tuy nhiờn, cú hai trường hợp tầm thường nhưng đặc biệt cú lợị Nếu phộp chiếu của R trờn một thuộc tớnh đơn A thỡ lực lượng đơn giản là số cỏc bộ khi phộp chiếu được thực hiện. Nếu một trong cỏc thuộc tớnh chiếu là khoỏ của R thỡ:

card(A(R))= card(R)

Tớch Decartes:

card(R S) = card(R) * card(S)

Phộp kết nối:

Khụng cú cỏch tổng quỏt để đỏnh giỏ lực lượng của một phộp kết nối nếu khụng cú cỏc thụng tin thờm. Cận trờn của lực lượng của phộp kết nối là lực lượng của tớch Decartes. Tuy nhiờn cú một trường hợp xuất hiện thường xuyờn và cỏch đỏnh giỏ là đơn giản. Nối R ⊲⊳A=BS với AR, BS, trong đú A là khoỏ của R, B là khoỏ ngoài của S, thỡ lực lượng của kết quả xấp xỉ là:

card(R ⊲⊳A=BS)= card(S)

Vỡ mỗi bộ của S hợp với nhiều nhất một bộ của R. Hiển nhiờn, vẫn đỳng nếu B là khoỏ của S, A là khoỏ ngoài của R. Tuy nhiờn, đỏnh giỏ này là một cận trờn vỡ giả sử rằng mỗi biến của R tham gia vào phộp kết nốị Với cỏc phộp kết nối khỏc, lực lượng của kết quả là:

card(R ⊲⊳ S) = SFJ*card(R) * card(S)

Nửa kết nối:

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

Cụng thức này chỉ phụ thuộc vào thuộc tớnh A của S, nờn thường được gọi là hệ số chọn của thuộc tớnh A của S, ký hiệu SFSJ(S.A) và là hệ số chọn của S.A trờn bất cứ thuộc tớnh kết nối khỏc. Vỡ thế, lực lượng của phộp nửa kết nối được cho như sau:

card(R⋉AS) = SFSJ (S.A)*card(R)

Phộp hợp:

Rất khú đỏnh giỏ số lượng của RS, vỡ cỏc bộ giống nhau giữa R và S bị loại bỏ bởi phộp hợp. ở đõy, chỉ đưa ra cụng thức tớnh cận trờn bằng card(R) + card(S), cận dưới bằng max{card(R), card(S)}(giả sử R và S khụng chứa cỏc bộ lặp).

Phộp trừ:

Cũng như phộp hợp, ở đõy chỉ đưa ra cận trờn và cận dướị Cận trờn của card(R-S) là card(R), cận dưới là 0.

2.7.4.2. Thứ tự kết nối trờn cỏc cõu truy vấn đoạn

Trong chương 2, ta đó thấy thứ tự kết nối cú vai trũ quan trọng trong việc tối ưu hoỏ cõu truy vấn tập trung. Thứ tự kết nối trong mụi trường phõn tỏn cũn quan trọng hơn vỡ cỏc phộp kết nối giữa cỏc đoạn cú thể làm tăng chi phớ truyền thụng. Cú hai cỏch tiếp cận cơ bản để sắp thứ tự cỏc phộp kết nối trong cỏc cõu truy vấn đoạn.

- Cố gắng tối ưu thứ tự của cỏc phộp kết nối một cỏch trực tiếp

- Thay cỏc phộp kết nối bởi kết hợp cỏc phộp nửa kết nối để cực tiểu hoỏ cỏc chi phớ truyền thụng.

2.7.4.3 Thứ tự kết nối

Một số thuật toỏn tối ưu hoỏ thứ tự của cỏc phộp kết nối một cỏch trực tiếp khụng sử dụng phộp nửa kết nốị Thuật toỏn INGRES phõn tỏn và R* là đại diện cho lớp nàỵ Phần này đề cập đến việc sử dụng cỏc phộp nửa kết nối để tối ưu hoỏ cỏc cõu truy vấn kết nối [7].

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

- Cõu truy vấn được định vị và biểu diễn trờn cỏc đoạn, ta khụng cần phõn biệt giữa cỏc đoạn của cựng một quan hệ và cỏc đoạn của cỏc quan hệ khỏc.

- Dựng thuật ngữ quan hệ để chỉ một đoạn lưu trữ tại một trạm cụ thể. - Bỏ qua chi phớ xử lý địa phương.

- Chỉ xột cỏc cõu truy vấn kết nối mà cỏc toỏn hạng quan hệ được lưu tại cỏc trạm khỏc nhaụ

- Bỏ qua chi phớ truyền dữ liệu tại trạm kết quả.

Vấn đề truyền toỏn hạng trong phộp kết nối đơn, hiển nhiờn là gửi quan hệ

nhỏ hơn tới trạm của quan hệ

lớn hơn, cú hai khả năng

như hỡnh 4.2

Hỡnh 2.20: Truyền cỏc toỏn hạng trong phộp toỏn hai ngụi

Trường hợp cú hơn hai quan hệ kết nối, cũng như trường hợp một kết nối đơn, mục đớch của thuật toỏn thứ tự kết nối là truyền cỏc toỏn hạng nhỏ hơn. Vấn đề khú khăn ở đõy là cỏc phộp kết nối cú thể giảm hoặc tăng kớch thước của cỏc kết quả kết nốị Một giải phỏp là đỏnh giỏ chi phớ truyền thụng của tất cả cỏc chiến lược và chọn ra chiến lược tốt nhất. Tuy nhiờn số cỏc chiến lược tăng nhanh khi số cỏc quan hệ tăng nờn thường dựng phương phỏp dũ tỡm (heuristic) để loại trừ một số trường hợp xấụ

Vớ dụ 2.25: Xột cõu truy vấn DUAN ⊲⊳SHDA KYSU ⊲⊳SHKS HOSODA, với đồ thị kết nối cho ở hỡnh 2.21. Cõu truy vấn này được thực hiện ớt nhất theo 5 cỏch khỏc nhaụ Cỏc chiến lược này được mụ tả bởi cỏc chương trỡnh sau:

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

1. KYSUtrạm 2

Trạm 2 tớnh toỏn KYSU’ = KYSU ⊲⊳ HOSODA KYSU‟ trạm 3

Trạm 3 tớnh toỏn KYSU’ ⊲⊳ DUAN 2. HOSODA  trạm 1

Trạm 1 tớnh toỏn KYSU’ = KYSU ⊲⊳ HOSODA KYSU‟ trạm 3

Trạm 3 tớnh toỏn KYSU’⊲⊳ DUAN 3. HOSODA trạm 3

Trạm 3 tớnh toỏn HOSODA’ = HOSODA ⊲⊳ DUAN HOSODA‟ trạm 1

Trạm 1 tớnh toỏn HOSODA’ ⊲⊳ HOSODA 4. DUANtrạm 2

Trạm 2 tớnh toỏn DUAN’ = DUAN ⊲⊳ HOSODA DUAN‟trạm 1

Trạm 1 tớnh toỏn DUAN’ ⊲⊳ DUAN 5. KYSUtrạm 2

DUAN‟trạm 2

Trạm 2 tớnh toỏn KYSU ⊲⊳ DUAN ⊲⊳ HOSODA

Để chọn một trong cỏc chương trỡnh trờn, phải biết hoặc phỏng đoỏn: size(KYSU), size(HOSODA), size(DUANsize(KYSU⊲⊳HOSODA), size(HOSODA⊲⊳DUAN). Nếu quan tõm đến thời gian trả lời thỡ xột chiến lược 5, vỡ việc truyền cú thể thực hiện song song.

Số húa bởi Trung tõm Học liệu – Đại học Thỏi Nguyờn http://www.lrc-tnụedụvn

chỉ xột kớch thước của cỏc toỏn hạng quan hệ. Trong trường hợp này, cỏc quan hệ được sắp theo kớch thước tăng, thứ tự được thực hiện theo sắp xếp này và đồ thị kết nốị Vớ dụ, thứ tự (KYSU, HOSODA, DUAN) nờn sử dụng chiến lược 1, thứ tự (DUAN, HOSODA, KYSU) nờn sử dụng chiến lược 4.

2.7.4.4. Cỏc thuật toỏn dựa trờn phộp nửa kết nối

Một phần của tài liệu tối ưu hóa truy vấn trong cơ sở dữ liệu phân tán (Trang 66 - 106)

Tải bản đầy đủ (PDF)

(106 trang)