TỐI ƯU HÓA TRUY VẤN PHÂN TÁN

Một phần của tài liệu luận văn thạc sĩ xây dựng cơ sở dữ liệu phân tán phục vụ thông tin nhanh về nhân sự tại quảng bình (Trang 79)

6. Tổng quan tài liệu nghiên cứu

3.2.TỐI ƯU HÓA TRUY VẤN PHÂN TÁN

Truy vấn thu được từ giai đoạn phân rã và định vị dữ liệu có thể được thực hiện một cách đơn giản bằng việc thêm vào các thao tác truyền thông. Việc hoán vị thứ tự các phép toán trong một câu truy vấn có thể cung cấp nhiều chiến lược tương đương khác nhau. Thông thường bộ tối ưu tìm tìm một chiến lược gần tối ưu và tránh các chiến lược “tồi”. Đầu ra của bộ tối ưu là một lịch trình được tối ưu bao gồm truy vấn đại số được xác định trên các mảnh và các phép toán truyền thông hỗ trợ việc thực hiện truy vấn trên các trạm.

Để chọn lựa được một chiến lược tối ưu nói chung, bộ tối ưu phải xác định chi phí thực hiện câu truy vấn.

Mô hình chi phí gồm các hàm chi phí để dự đoán chi phí của các toán tử, số liệu thống kê, dữ liệu cơ sở và các công thức để ước lượng kích thước các kết quả trung gian.

cầu chỉ đạo, điều hành SNV, Sở/huyện Báo cáo định kỳ theo quy định D ữ liệu

hoặc theo tổng chi phí hoặc theo thời gian trả lời.

Tổng chi phí là tổng của tất cả các thành phần chi phí, bao gồm chi phí truyền thông, chi phí I/O và chi phí CPU. Để đơn giản, ta bỏ qua chi phí xử lý địa phương (I/O, CPU), coi chi phí truyền thông là trọng yếu.

Thời gian trả lời truy vấn là thời gian được tính từ khi bắt đầu xử lý đến khi hoàn thành truy vấn.

Công thức tổng quát xác định tổng chi phí là:

Total_time = TCPU* #insts + TI/O* #I/Os + TMSG* #msgs + TTR* #bytes

(3.1) Trong đó,

#insts: tổng tất cả các lệnh CPU ở các trạm

#I/OS: số lần xuất/nhập đĩa

#msgs: số thông báo

#bytes: tổng kích thước của tất cả các thông báo Thời gian

xử lý cục bộ

TCP U

Thời gian của một chỉ thị CPU

TI/O Thời gian cho một thao tác xuất nhập đĩa Thời gian

truyền

TMS G

Thời gian cố định cần để khởi hoạt và nhận một thông báo

TTR Thời gian cần để truyền một đơn vị dữ liệu từ vị trí A đến vị trí B

Thời gian truyền #bytes dữ liệu từ vị trí này đến vị trí khác được giả thiết là hàm tuyến tính theo #bytes:

CT(#bytes) = TMSG + TTR * #bytes (3.2) Khi thời gian đáp ứng truy vấn là hàm mục tiêu của thể tối ưu hóa, cần

Response_time = TCPU * seq_#insts + TI/O * seq_#I/Os + TMSG * seq_#msgs + TTR * seq_#bytes

(3.3) Trong đó, seq_#x, với x có thể là các chỉ thị (insts), các xuất nhập I/O, các thông báo (msgs) hoặc bytes, là số lượng x tối đa phải được thực hiện một cách tuần tự khi thực hiện truy vấn. Mọi xử lý và truyền dữ liệu thực hiện song song đều được bỏ qua.

3.2.2. Số liệu thống kê cơ sở dữ liệu

Yếu tố chính ảnh hưởng đến hiệu quả hoạt động của một chiến lược thực thi là kích thước các quan hệ trung gian được tạo ra. Việc ước lượng kích thước các quan hệ trung gian 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 để dự đoán lực lượng của các kết quả. Đối với một quan hệ R được định nghĩa trên tập thuộc tính A= {A1, A2, …, An} và được phân mảnh là R1, R2, …, Rn, dữ liệu được thống kê điển hình như sau:

(1). Đối với mỗi thuộc tính Ai, chiều dài được ký hiệu là

length(Ai), và đối với mỗi thuộc tính Aicủa mỗi mảnh Rj, số lượng các giá trị phân biệt của Ai, là lực lượng khi chiếu mảnh Rj trên Ai, được ký hiệu là card(πAi(Rj)).

(2). Ứng với miền của mỗi thuộc tính Ai trên một tập giá trị sắp thứ tự được, giá trị lớn nhất và nhỏ nhất được ký hiệu là max(Ai), (adsbygoogle = window.adsbygoogle || []).push({});

min(Ai).

(3). Ứng với miền của mỗi thuộc tính Ai, lực lượng của miền được ký hiệu là card(dom[Ai]). Giá trị này cho biết số lượng các giá trị duy nhất trong dom[Ai].

SFJ(R, S) = card(R pS) (3.4)

card(R) * card(S)

Hệ số SFJ nhỏ thì phép nối có tính chọn tốt, ngược lại có tính chọn tồi. Các thống kê này có lợi để đánh giá kích thước của quan hệ trung gian. Kích thước một quan hệ trung gian R được xác định bởi :

size(R) = card(R)*length(R) (3.5) Trong đó:

+ length(R) là độ dài (số byte) của mỗi bộ trong R, được tính theo độ dài các thuộc tính của nó,

+ card(R) là số các bộ của R được tính theo công thức ở phần tiếp theo.

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

Các toán hạng quan hệ được ký hiệu bởi R 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(σF(R)) = SFS(F ) card(R) (3.6) Trong đó SFS(F) phụ thuộc vào công thức chọn và có thể tính như sau, với p(Ai), p(Aj) là các tân từ tương ứng với các thuộc tính Ai, Aj.

SFS (A = value) = 1(3.7)

Card(ϖA(R))

SFS (A > value) = max(A) -value (3.8) max(A) - min(A)

SFS (A < value) = value -min(A) (3.9) max(A) - min(A)

SFS( p(Ai) p(Aj )) = SFS( p(Ai)) SFS(p(Aj)) (3.10)

Phép chiếu

Nếu phép chiếu của R trên một thuộc tính đơn A thì lực lượng được tính đơ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) card(RπS) = card(R) * card(S) (3.13)

Phép nối

Nếu R ´ABS với AϖR, BS, 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Î AB S) = card(R)

Với các phép nối khác, lực lượng của kết quả là :

SFSJ(R ω A S) Card(<A(S)) (3.15)

card(dom[A])

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 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 nối khác. Vì thế, lực lượng của phép nối được tính như sau :

card(R A S) = SFSJ (S.A) card(R) (3.16)

Phép hợp (adsbygoogle = window.adsbygoogle || []).push({});

Cận trên của card(R<S) bằng card(R) + card(S), Cận dưới của card(RS) bằng max{card(R),card(S)}

Phép trừ

Cận trên của card(R-S)card(R), cận dưới là 0.

3.3. THUẬT TOÁN TỐI ƯU HÓA TRUY VẤN PHÂN TÁN SYSTEM R*

Thuật toán System R* mở rộng kỹ thuật phát triển của thuật toán tối ưu hóa truy vấn tập trung System R, sử dụng phương pháp tiếp cận biên dịch, thực hiện tìm kiếm vét cạn tất cả các chiến lược có thể có nhằm chọn ra chiến lược có chi phí nhỏ nhất. Biên dịch truy vấn là một tác vụ phân tán trong R*, được điều phối bởi một vị trí chính là nơi câu truy vấn được khởi động. Thể tối ưu hóa của vị trí chính đưa ra tất cả mọi quyết định có liên quan đến các vị trí, như chọn các vị trí thực hiện, các mảnh và phương pháp truyền dữ liệu. Các vị trí trợ lý, là vị trí có quan hệ cần cho câu truy vấn, sẽ chịu trách nhiệm về các quyết định cục bộ còn lại và tạo ra các hoạch định truy xuất cục bộ cho câu truy vấn.

xuất cho mỗi mảnh. Các quyết định này dựa trên số liệu thống kê và các công thức được dùng để đánh giá kích thước các kết quả trung gian và thông tin về đường truy xuất. Ngoài ra, thể tối ưu hóa còn phải chọn các vị trí của kết quả nối và phương pháp truyền dữ liệu giữa các vị trí. Trong System R* có hai phương pháp được hỗ trợ khi cần truyền qua lại giữa các vị trí.

1. Chuyển toàn bộ. Toàn bộ quan hệ được chuyển đến vị trí nối và được lưu vào một quan hệ tạm trước khi được nối. Nếu thuật toán nối thuộc loại nối trộn, quan hệ này không cần phải lưu và vị trí nối có thể xử lý các bộ đi vào lần lượt theo một dòng khi chúng đến đó.

2. Gửi khi cần. Quan hệ ngoại cảnh được quét tuần tự, đối với mỗi bộ, giá trị nối được gửi đến vị trí của quan hệ nội sự, ở đó nó chọn các bộ nội sự khớp được với giá trị đó rồi gửi các bộ được chọn đến vị trí của quan hệ ngoại cảnh. Phương pháp này tương đương với nối nửa của quan hệ nội sự với mỗi bộ ngoại cảnh.

Cho trước nối của một quan hệ ngoại cảnh R với một quan hệ nội sự S

trên thuộc tính A, có bốn chiến lược nối.

LT: thời gian xử lý cục bộ

CT: thời gian truyền

s: số lượng trung bình các bộ của S khớp với một bộ của R

giả sử bỏ qua chi phí tạo ra kết quả

s = card(S

ÈωAR)

(3.17)

card(R)

Chiến lược 1. Chuyển toàn bộ quan hệ ngoại cảnh đến vị trí của quan hệ nội sự. Trong trường hợp này, các bộ của quan hệ ngoại cảnh có thể được nối với S khi chúng đến đó.

+ LT(truy xuất s bộ từ S) * card(R) (3.18)

Chiến lược 2. Chuyển toàn bộ quan hệ nội sự đến vị trí của quan hệ ngoại cảnh. Trong trường hợp này, các bộ nội sự không thể được nối khi chúng đến và chúng cần được lưu trong một quan hệ tạm thời T.

Total cost = LT(truy xuất card(S) bộ từ S) + CT(size(S))

+ LT(lưu card(S) bộ trong T) + LT(truy xuất card(R) bộ từ R)

+ LT(truy xuất s bộ từ T) * card(R) (3.19)

Chiến lược 3. Gửi các bộ của quan hệ nội sự khi cần cho mỗi bộ của quan hệ ngoại cảnh. Trường hợp này, đối với bộ của R, giá trị thuộc tính nối được gửi đến vị trí của R để được nối khi chúng đến.

Total cost = LT(truy xuất card(R) bộ từ R) + CT(length(A)) * card(R)

+ LT(lưu card(S) bộ trong T) + LT(truy xuất s bộ từ S) * card(R)

+ CT(s * length(S)) * card(R) (3.20)

Chiến lược 4. Di chuyển cả hai quan hệ đến một vị trí thứ ba và tính nối ở đó. Trường hợp này, quan hệ nội sự được di chuyển trước đến vị trí thứ ba và lưu trong một quan hệ tạm T. Sau đó, quan hệ ngoại cảnh được chuyển đến đó và các bộ của nó được nối với T khi chúng đến.

Total cost = LT(truy xuất card(S) bộ từ S) + CT(size(S)) (adsbygoogle = window.adsbygoogle || []).push({});

+ LT(lưu card(S) bộ trong T) + LT(truy xuất card(R) bộ từ R)

3.4. ĐIỀU KHIỂN ĐỒNG THỜI PHÂN TÁN

Điều khiển đồng thời giải quyết các tính chất biệt lập và gắn bó của giao dịch khi tiến hành cập nhật thông tin từ cụm Server xã lên cụm Server huyện và cụm Server sở, ban ngành tương đương. Cơ chế điều khiển đồng thời phân tán của một hệ quản trị cơ sở dữ liệu phân tán bảo đảm tính gắn bó của một cơ sở dữ liệu sẽ được duy trì trong môi trường phân tán. Mức độ đồng thời là tham số quan trọng nhất trong các hệ phân tán. Do vậy, cơ chế điều khiển đồng thời cố tìm ra một phương án thích hợp, vừa duy trì được tính gắn bó của cơ sở dữ liệu, vừa duy trì được mức độ đồng thời cao.

nhóm lớn: các phương pháp điều khiển đồng thời lạc quan và các phương pháp điều khiển đồng thời bi quan. Các thuật toán bi quan đồng bộ hóa việc thực hiện đồng thời của các giao dịch trước khi thực hiện chúng, trong khi đó các thuật toán lạc quan để việc đồng bộ hóa các giao dịch cho đến khi chúng kết thúc.

3.4.2. Điều khiển đồng thời bằng khóa chốt

Ý tưởng chính của việc điều khiển đồng thời bằng khóa chốt là bảo đảm dữ liệu dùng chung cho các thao tác tương tranh chỉ được truy xuất mỗi lần một giao dịch. Điều này được thực hiện bằng cách liên kết một khóa chốt (lock) với mỗi đơn vị khóa. Khóa này được giao dịch đặt ra trước khi nó truy xuất và được điều chỉnh lại vào lúc nó hết sử dụng. Một đơn vị khóa không thể truy xuất được nếu đã bị khóa bởi một giao dịch khác. Vì vậy yêu cầu khóa của một giao dịch chỉ được trao nếu khóa đi kèm hiện không bị một giao dịch khác giữ.

Việc đồng bộ hóa các thao tác tương tranh của các giao dịch tương tranh có hai loại khóa chốt được kèm với mỗi đơn vị khóa: khóa đọc (rl) và khóa ghi (wl). Một giao dịch Ti đang muốn đọc một mục dữ liệu được chứa trong đơn vị khóa x sẽ nhận được một khóa đọc trên x[rli(x)] và cũng tương tự với các thao tác ghi. Hai thể thức khóa là tương thích nếu hai giao dịch truy xuất đến cùng một mục dữ liệu có thể nhận được khóa trên mục dữ liệu đó cùng một lúc. Các khóa đọc là tương thích với nhau, còn các khóa đọc-ghi hoặc ghi-ghi thì không. Vì vậy hai giao dịch vẫn có thể đồng thời đọc cùng một mục.

rlj(x) wlj(x) tương thích không tương thích không tương thích không tương thích

Trong các hệ thống dùng khóa chốt, bộ xếp lịch là bộ quản lý khóa. Bộ quản lý giao dịch sẽ chuyển cho bộ quản lý khóa các thao tác CSDL và các thông tin kèm theo. Sau đó bộ quản lý khóa sẽ kiểm tra xem đơn vị khóa có chứa mục dữ liệu đó đã bị khóa hay chưa. Nếu đã khóa, và thể thức khóa đó không tương thích với thể thức của giao dịch đang yêu cầu, thao tác sẽ bị hoãn. Ngược lại, khóa sẽ được đặt với thể thức mong muốn và thao tác này được chuyển cho bộ xử lý dữ liệu để truy xuất CSDL thực sự. Sau đó bộ quản lý giao dịch được thông tin về các kết quả thực hiện. Việc kết thúc giao dịch sẽ giải phóng các khóa của nó và làm khởi hoạt một giao dịch khác đang đợi truy xuất mục dữ liệu này.

Quy tắc khóa hai pha: một giao dịch không được giải phóng khóa cho đến khi nó đảm bảo không yêu cầu thêm khóa nữa. Phương pháp khóa chốt hai pha (2PL) thực hiện các giao dịch qua 2 pha: pha tăng trưởng, nhận các khóa và truy xuất các mục dữ liệu; pha thu hồi, giải phóng các khóa. Điểm khóa là thời điểm giao dịch đã nhận được tất cả các khóa nhưng chưa bắt đầu giải phóng bất kỳ khóa nào.

dữ liệu, vì thế khóa được giải phóng. Nếu giao dịch bị hủy bỏ sau khi giải phóng một khóa, có thể làm hủy bỏ dây chuyền cả các giao dịch đã truy xuất các mục đã mở khóa.

Để khắc phục các khó khăn nêu trên, các bộ xếp lịch cài đặt khóa chốt hai pha nghiêm ngặt, nó giải phóng toàn bộ các khóa vào lúc kết thúc giao dịch.

Hình 3.7. Biểu đồ khoá 2 pha nghiêm ngặt

a. Thuật toán khoá 2 pha tập trung (C2PL)

Trong môi trường phân tán (nhân bản hoặc phân hoạch), chỉ có một vị trí có bộ quản lý khóa, các bộ quản lý giao dịch ở các vị trí khác phải giao tiếp với vị trí có bộ quản lý khóa đó. Truyền giao giữa các vị trí hợp tác khi thực hiện một giao dịch xảy ra giữa bộ quản lý giao dịch ở vị trí khởi đầu giao dịch (TM điều phối), bộ quản lý khóa tại vị trí trung tâm, các bộ xử lý dữ liệu tại các vị trí có tham gia (vị trí có thao tác xảy ra).

Thuật toán 2PL phân quyền mong muốn có bộ quản lý khóa tại mỗi vị trí. So với C2PL, D2PL có hai sửa đổi: các thông báo gửi đến bộ quản lý khóa của tất cả các vị trí tham gia; các thao tác không do TM điều phối chuyển đến các bộ xử lý dữ liệu mà do các bộ quản lý khóa tham gia chuyển đi. TM điều phối không chờ thông báo “yêu cầu khóa đã được trao”.

tính tuần tự bằng phương pháp độc quyền truy xuất. Chúng chọn trước một thứ tự tuần tự hóa và thực hiện các giao dịch theo thứ tự tuần tự đó. Bộ quản lý giao dịch gán cho mỗi giao dịch Ti một thời dấu duy nhất

ts(Ti) vào lúc khởi đầu.

Thời dấu là một định danh đơn giản dùng để nhận ra mỗi giao dịch một cách duy nhất và cho phép xếp thứ tự chúng. Hai tính chất của nó là tính duy nhất (tính phát sinh thời dấu) và tính đơn điệu (hai thời dấu của một bộ quản lý giao dịch phải tăng đơn điệu).

Quy tắc xếp thứ tự thời dấu như sau:

Quy tắc TO. Cho hai thao tương tranh OijOkl tương ứng thuộc về các giao dịch TiTk, Oij được thực hiện trước Okl nếu và chỉ nếu ts(Ti) <

ts(Tk). Trong trường hợp này, Tiđược gọi là giao dịch già hơn và Tkđược gọi là giao dịch trẻ hơn.

a. Thuật toán thứ tự timestamp cơ bản

Thuật toán TO cơ bản thực hiện minh bạch quy tắc TO. Bộ quản lý giao dịch cộng tác gán timestamp cho mỗi giao dịch, xác định các vị trí nào lưu trữ mục dữ liệu nào và gửi một vài thao tác đến những vị trí nào.

Một phần của tài liệu luận văn thạc sĩ xây dựng cơ sở dữ liệu phân tán phục vụ thông tin nhanh về nhân sự tại quảng bình (Trang 79)