Quy trình ngẫu nhiên hoá như sau: Trước tiên một hoặc nhiều QEP khởi đầu được xây dựng trực tiếp theo ý thích chủ quan, sau đó cải thiện phương án bằng cách thăm dò các lân cận của QEP
Trang 1CHƯƠNG VI
TỐI ƯU HOÁ VẤN TIN PHÂN TÁN
PGS.NCVC.TS LÊ HUY THẬP
Trang 2Hình 2.3b Quan hệ PROJ
MontrealNew YorkNew YorkParis
150000135000250000310000
InstrumentationDabatase DevelopCAD/ CAM
Maintenance
P1P2P3P4
LOC BUDGET
PNAME PNO
Hình 2.3a Quan hệ EMP
Elect EngSyst AnalMech.EngProgrammerSyst.Anal Elect.Eng Mech.EngSyst Anal
J.Doe
M SmithA.LeeJ.MmithB.CaseyL.ChuR.DavidJ.Jones
ENO
Hình 2.3c Quan hệ PAY
40000340002700024000
Hình 2.3c Quan hệ ASG
1224610481824483640
ManagerAnalystAnalystConsultantEngineerProgrammerManagerManagerEngineerManager
P1P1P2P3P4P2P2P4P3P3
E1E2 E2E3E3E4E5E6E7E8
DUR RESP
PNO ENO
Trang 36.1 QUÁ TRÌNH TỐI ƯU HÓA VẤN TIN
6.1.1 Không gian tìm kiếm
Không gian tìm kiếm là một tập các cây toán tử tương đương, có được bằng cách
áp dụng các qui tắc biến đổi Để nêu bật các đặc trưng của thể tối ưu hoá vấn tin, chúng ta thường tập trung nghiên cứu các cây nối (Join tree) là loại cây toán tử với các phép toán nối hoặc phép toán tích Descartes hoặc phép toán hợp
Ví dụ 6.1–1
Câu vấn tin “Cho biết tên nhân viên đang tham gia một dự án nào đó”
SELECT ENAME FROM EMP , ASG , PROJWHERE (EMP.ENO = ASG.ENO) AND (ASG.PNO = PROJ.PNO)Câu vấn tin này sinh ra ba cây nối tương đương ở hình 6.1–2 (Thực ra có thể có có tới n! cây)
JoinPNO
JoinENO
JoinENO
JoinPNO
JoinENO, PNO
Hình 6.1–2 Các cây nối tương đương
Trang 4Việc dùng qui hoạch động và các phương án trên bảo đảm tìm ra tất cả các QEP tuy nhiên với chi phí cao, vì thế người ta đang tập trung vào lối tiếp cận chiến lược ngẫu nhiên để làm giảm độ phức tạp của tối ưu hoá, nhưng tất nhiên là không đảm bảo tìm được phương án tối ưu toàn cục
Ngẫu nhiên hoá Quy trình ngẫu nhiên hoá như sau:
Trước tiên một hoặc nhiều QEP khởi đầu được xây dựng trực tiếp (theo ý thích chủ quan), sau đó cải thiện phương án bằng cách thăm dò các lân cận của QEP đã có, ví
dụ ở hình 6.1–5 là một cách biến đổi điển hình bằng cách hoán đổi hai quan hệ toán hạng được chọn ngẫu nhiên từ QEP hình 6.1-5(a) sang QEP hình 6.1-5(b)
6.1.2 Các chiến lược tìm kiếm
Trang 5Hình 6.1–4 X.dựng tối ưu hoá một
cách đơn định kiểu Q.hoạch động
R2 R1
R2 R1
thể tối ưu hoá trong chiến
lược ngẫu nhiên hoá
Trang 66.1.3 Mô hình chi phí phân tán
Hàm chi phí là một loại chi phí nào đó, nếu hiểu theo thời gian thì hàm chi phí có thể là:
Total_Time = TCPU #insts + TI/O I/Os + TMSG #msgs + TTR #bytesHai thành phần đầu là thời gian xử lý cục bộ, trong đó
TCPU là thời gian xử lý một chỉ thị (lệnh) của CPU và #insts là số chỉ thị;
TI/O là thời gian cho một xuất, nhập đĩa và I/Os số lần xuất nhập đĩa;
TMSG là thời gian cố định để khởi hoạt và nhận một thông báo #msgs là số thông báo;
TTR là thời gian cần để truyền một đơn vị dữ liệu từ vị trí này sang vị trí khác, đơn vị dữliệu ở đây tính theo byte, #bytes là số byte dữ liệu, nhưng cũng có thể tính theo những đơn
vị khác
Tác nhân chính ảnh hưởng đến hiệu qủa hoạt động của một chiến lược là kích thước các quan hệ trung gian Khi phép toán tiếp theo nằm tại một vị trí khác, quan hệ trung gian phải được di chuyển đến đó Vì thế phải biết kích thước của các kết quả trung gian của các phép toán đại số quan hệ
6.1.3.2 Số liệu thống kê CSDL
6.1.3.1 Hàm chi phí (hàm mục tiêu)
Trang 7Ví dụ 6.2-1 "Cho biết tên của các nhân viên đang làm việc trong dự án CAD/CAM” Câu SQL như sau:
q1 : SELECT EMP.ENAME FROM EMP , ASG , PROJ
WHERE EMP.ENO=ASG.ENO
AND PROJ.PNO = ASG.PNOAND PNAME = "CAD/CAM”
Cách thực hiện q1 như sau:
Chọn PNAME = "CAD/CAM”, trong PROJ (Thấy rằng chỉ có một kết quả của PNAME =
"CAD/CAM" với mã P3) Từ phép nối PROJ.PNO= ASG.PNO thấy rằng trong ASG, ứng với P3, có E3, E7 và E8 của ENO
6.2 TỐI ƯU HÓA VẤN TIN TẬP TRUNG
Hai thuật toán tối ưu hóa thông dụng được sử dụng cho CSDL tập trung và phân tán: INGRES và System R
6.2.1 Thuật toán INGRES
Cuối cùng từ quan hệ EMP, qua phép nối ASG.ENO = EMP.ENO cho ta có kết quả
EMP.ENAME = {A.Lee , R.David , J.Jones}, do E3A.Lee , E7 R.David và E8 J.Jones
Trang 8Phép tách Tách các phép chọn, q1 được thay bởi q11 và q', trong đó JVAR là một quan
hệ trung gian
q11: SELECT PROJ.PNO INTO JVAR FROM PROJ
WHERE PNAME = "CAD/CAM"
Kết quả trong JVAR chỉ có P3
q ' : SELECT EMP.ENAME FROM EMP, ASG , JVAR
WHERE EMP.ENO = ASG.ENO AND ASG.PNO = JVAR.PNO
Bây giờ q' được tách ra q12 và q13 như sau:
q12: SELECT ASG.ENO INTO GVAR FROM ASG , JVAR
WRERE ASG.PNO = JVAR PNO
Kết quả trong GVAR chỉ có E3, E7 và E8
q13: SELECT EMP.ENAME FROM EMP , GVAR
WHERE EMP.ENO = GVAR.ENO
Từ quan hệ EMP ta có EMP.ENAME = {A.Lee , R.David , J.Jones}
Tóm tắt thuật toán INGRES:
Trước tiên sẽ thực hiện các phép toán đơn quan hệ và cố gắng giảm thiểu kích thước
của các kết quả trung gian bằng cách xếp lại thứ tự các phép toán hai quan hệ
Kí hiệu qi-1qi để chỉ q được chia thành qi-l và qi, trong đó qi-1 được thực hiện trước và kết quà sẽ được qi sử dụng
Trang 9Cho câu vấn tin q có n quan hệ, INGRES phân rã q thành n câu vấn tin con q1 q2 …
qn Phân rã này sứ dụng hai kỹ thuật cơ bán: tách và thay thế
Tách là kỹ thuật chuyển câu vấn tin q thành q' q“, q‘ được xử lí trước và kết quả đưa cho q” xử lí tiếp Nếu câu vấn tin q được biểu diễn bằng SQL dạng:
SELECT R1.A1, R2.A2 ,…, Rn.An FROM R1, R2, … , Rn
WHERE p1(R1.A’1) AND p2(R1.A1 , R2.A2,…, Rn.An)
Trong đó Ai và A’i là các danh sách thuộc tính của quan hệ Ri, p1 là vị từ có chứa các thuộc tính của quan hệ R1, và p2 là vị từ đa quan hệ có chứa các thuộc tinh của các quan hệ R1, R2,…, Rn
Câu vấn tin dạng này có thể được phân rã thành hai câu vấn tin con, q' q" qua phép tách quan hệ chung R1
q': SELECT R1.A1 INTO R’1 FROM R1
WHERE P1(R1.A’1)
trong đó R’1 là một quan hệ tạm thời chứa các thông tin cần thiết để thực hiện tiếp tục câu vấn tin:
q”: SELECT R2.A2, R3.A3 ,…, Rn.An FROM R’l , R2 , …, Rn
WHERE p2(R1.A1 , R2.A2,…, Rn.An)
Nếu q” (câu vấn tin đa quan hệ) không thể tách tiếp được nữa (chẳng hạn q12 và q13 trong
ví dụ 6.2-1) được gọi là bất khả giản
Các vấn tin bất khả giản được biến đổi thành câu vấn tin đơn quan hệ nhờ phép thế bộ như sau
Trang 10Cho câu vấn tin q có n-quan hệ, các bộ của một biến được thay bằng các giá trị của chúng, tạo ra được một tập các câu vấn tin (n-1)–biến
Phép thế bộ được tiến hành như sau:
Trước tiên chọn một quan hệ trong q để thay thế Gọi R1 là quan hệ đó Với mỗi bột1i trong R1, các thuộc tính được tham chiếu trong q được thay bằng các giá trị thực sựtrong t1i, tạo ra một câu vấn tin q’ có (n - l) quan hệ Vì vậy tổng số câu vấn tin q’ được sinh ra hởi phép thế bộ là card(R1) Như vậy:
q(R1, R2,…,Rn) được thay bằng {q(t1i, R2,…,Rn) | t1i R1)}
Vì thế đối với mỗi bộ thu được, câu vấn tin con được xử lý đệ qui bằng phép thế nếu
nó chưa bất khả giản
Ví dụ 6.2-2
Xét tiếp câu vấn tin q13 (trong ví dụ 6.2-1):
SELECT EMP.ENAME FROM EMP, GVAR
WHERE EMP.ENO = GVAR.ENO
Đây là câu vấn tin đa quan hệ (2 quan hệ)
Do q13 sau q12
q12: SELECT ASG.ENO INTO GVAR FROM ASG , JVAR
WRERE ASG.PNO = JVAR PNO
Kết quả trong GVAR chỉ có E3, E7 và E8 tương ứng với 3 bộ Còn trong EMP có 8 bộ(xem CSDL_MAU)
Phép thế bộ
Trang 11Quan hệ được định nghĩa bởi biến GVAR chỉ có thuộc tính ENO và dom(ENO) là E3, E7 và E8 Phép thế cho GVAR tạo ra ba câu vấn tin con đơn quan hệ:
q131: SELECT EMP.ENAME FROM EMP WHERE EMP.ENO = "E3”
q132: SELECT EMP.ENAME FROM EMP WHERE EMP.ENO = "E7"
q133: SELECT EMP.ENAME FROM EMP WHERE EMP.ENO = "E8"
Các câu vấn tin q131, q132, q133 sẽ do OVQP xử lý
Nội dung thuật toán INGRES
Thuật toán INGRES được gọi là INGRES-QOA dùng để xử lý đệ qui các câu vấn tin Thuật toán áp dụng các phép chọn và các phép chiếu ngay khi có thể bằng kỹ thuật
tách
Kết quả:
Các câu vấn tin đơn quan hệ được lưu lại, sau đó sẽ được OVQP (One-Variable
Query Processor-xử lí vấn tin đơn biến) sử dụng
Câu vấn tin bất khả giản còn lại được ký hiệu là MRQ' [MRQ (MultiRelation Query –Vấn tin đa quan hệ, ORQ One-Relation Query– Vấn tin đơn quan hệ)
Quan hệ nhỏ nhất của MRQ’ đã được biết từ kết qủa của câu vấn tin trước đó sẽ được chọn để thế bộ nhằm tạo ra số lượng vấn tin con ít nhất
Các vấn tin đơn quan hệ được tạo ra sẽ do OVQP xử lý
Trang 12Vào: MRQ là câu vấn tin có n quan hệ
Ra: Là các câu vấn tin đơn quan hệ
Begin1
Output
If n = 1 then
Output = run (MRQ) //thực hiện câu vấn tin một quan hệ là xong//
Else begin //có câu vấn tin đa quan hệ//
MRQ = {ORQ1, ORQ2, … , ORQm, MRQ’} //tách MRQ thành tập m câu//
// vấn tin đơn quan hệ và một câu vấn tin đa quan hệ//
For i = 1 to m DoBegin2
Output’ = run(ORQi) //thực hiện ORQi}
Output = Output Output’ //trộn tất cả các kết quả lại//
End Begin2Next i
R = CHOOSE _VARIABLE(MRQ’) //R được chọn cho phép thế bộ//
For Each t In R Do //t là biến bộ//
Begin3MRQ” = thay giá trị cho t trong MRQ’
Output’ = INGRES–QOA(MRQ”) //gọi đệ qui//
Output = Output Output’ //Trộn tất cả các kết quả lại//
End Begin3Next t
End-if
End Begin1 //INGRES–QOA//
Thuật toán 6-1 INGRES – QOA (Tự đọc TL)
Trang 13Vào của System R là cây toán tử Ra là phương án thực hiện (cây toán tử tối ưu).
Tập các chiến lược khác nhau được xây dựng động, khi hai cây nối tương đương nhau thì cây nối có chi phí nhỏ hơnđược giữ lại Cây dùng phép tích Descartes bị
loại bỏ ngay khi có thể
Thuật toán tối ưu hóa bao gồm hai bước chính
1 Dự đoán phương án có chi phí thấp nhất để truy xuất đến mỗi quan hệ dựa trên một vị từ chọn
2 Đối với mỗi quan hệ R, thứ tự nối tốt nhất sẽ được ước lượng, trong đó trước tiên R
sẽ được truy xuất bằng cách sử dụng phương pháp truy xuất đơn quan hệ tốt nhất của
nó Thứ tự có chi phí thấp nhất trở thành cơ sở cho phương án thực hiện tốt nhất
6.2.2 Thuật toán System R
Khi nối hai quan hệ, quan hệ được đọc trước gọi là quan hệ ngoại cảnh, quan hệ còn lại là quan hệ có các bộ cần tìm dựa theo các giá trị có được từ quan hệ ngoại cảnh được gọi là quan hệ nội sự
Chọn phương pháp nối ở đây là chọn đường truy xuất có chi phí thấp nhất đến nội sự
Phương pháp thứ nhất, được gọi là vòng lồng nhau, tạo ra tích của hai quan hệ Đó
là với mỗi bộ của ngoại cảnh, từng bộ của nội sự thỏa vị từ nối sẽ được truy xuất lần lượt để tạo ra quan hệ kết quả
Phương pháp thứ hai được gọi là nối trộn, trộn hai quan hệ đã được sắp xếp theo thuộc tính nối Chỉ mục trên thuộc tính nối có thể được sử dụng làm đường truy xuất
Tóm tắt thuật toán System R
Trang 14Phiên bản đơn giản của thuật toán System R cho câu vấn tin chọn chiếu - nối này có hai vòng:
Vòng 1 chọn ra đường truy xuất một quan hệ tốt nhất đến mỗi quan hệ trong câu vấn tin.Vòng 2 kiểm tra tất cả các hoán vị có thể có của các thứ tự nối (có n! hoán vị cho n quan hệ) và chọn ra chiến lược truy xuất tốt nhất cho câu vấn tin Các hoán vị được tạo ra bằng cách xây dựng động một cây các chiến lược khác nhau Trước tiên cần xét nối của mỗi quan hệ với mỗi quan hệ khác, sau đó là các nối của ba quan hệ, tiếp tục cho đến khi nối n quan hệ đều tối ưu Thực sự thuật toán không tạo ra tất cả các hoán vị có thể có bởi vì một số hoán vị hoàn toàn vô ích Chẳng hạn, hoán vị có chứa tích Descartes Với hai heuristic này, số lượng các chiến lược cần kiểm tra có cận trên là 2n
Kí hiệu nối là >J<, nối nửa là J<
Vào: QT là cây vấn tin có n quan hệ
Ra: là kết quả thực hiện
Thuật toán 6-2 R_QOA (Tự đọc Tài liệu)
Vào: QT là cây vấn tin có n quan hệ
Ra: là kết quả thực hiện
Begin
For m ỗi quan hệ Ri QT Do
For mỗi đường truy xuất AP ij đến Ri Do
Trang 15xác định cost(APij)
End-for
best_APi APij có chi phí nhỏ nhất
End-for
For mỗi thứ tự (Ri1, Ri2 ,…, Rin) với i = 1,2,…, n! Do
Xây dựng strategy( .((best_APil >J< Ri2) >J< Ri3) >J< >J< Rin) tính chi phí của strategy
Cho hai quan hệ R và S nối của R và S được ký hiệu T = R >J<FS là một quan hệ con
F là vị từ nối được định nghĩa như sau:
6.3.1 Xếp thứ tự nối
Trang 16R S
Nếu size(R) > size(S)
Nếu size(R) < size(S)
Hình 6.3-1 Tuyền các toán hạng trong phép toán hai ngôi
Ví dụ 6.3-1
Xét câu vấn tin được biểu diễn bằng đại
số quan hệ sau:
PROJ >J<PNO EMP >J<ENOASG
Với đồ thị nối được trình bày trong hình
6.3-2 Câu vấn tin này có thể được thực
hiện ít nhất là bằng năm cách khác nhau
Chúng ta mô tả những chiến lược này
bằng những chương trình sau, trong đó (R
vị trí j) biểu thị quan hệ R được truyền
phân tán
1 EMP vị trí 2 Vị từ 2 tính EMP’ = EMP >J< ASG và
EMP' Vị trí 3 Vị trí 3 tính EMP’ >J< PROJ
2 ASG vị trí 1 Vị trí 1 tính EMP' = EMP >J< ASG và
EMP' vị trí 3 Vị trí 3 tính EMP >J< PROJ
3 ASG vị trí 3 Vị trí 3 tính ASG' = ASG >J< PROJ và
ASG' vị trí 1 Vị trí 1 tính ASG’ >J< EMP
4 PROJ vị trí 2 Vị trí 2 tính PROJ' = PROJ >J< ASG và
PROJ' vị trí 1 Vị trí 1 tính PROJ' >J< EMP
5 EMPvị trí 2 PROJvị trí 2 Vị trí 2 tính EMP >J< PROJ >J< ASG
Trang 17Để chọn ra một P.án trong số này, chúng ta phái biết hoặc dự đoán được các kích thước: size(EMP), size(ASG), size(PROJ), size(EMP>J<ASG) và size(ASG>J< PROJ) Hơn nữa nếu xét cả thời gian đáp ứng, việc tối ưu hóa phải tính cả truyền dữliệu (có thể thực hiện song song trong chiến lược 5)
6.3.2 Nối nửa
Nhắc lại phép nối nửa nối nửa, kí hiệu là J<, là phép toán không giao hoán Gọi F là vị
từ nối còn A là tập thuộc tính của R Thì nối nửa
Bỏ qua hằng TMSG trong thời gian truyền khi gíả thịết là toán hạng TTR*size(R) lớn hơn
nó rất nhiếu Chi phí của thuật toán dựa trên nối là chi phí truyền quan hệ R đến vị trí 2 Chi phí của thuật toán dựa trên nối nửa là chi phí của các bước 1 và 3 ở trên Vì thể phương pháp nối nửa sẽ là tốt hơn nếu:
size(A(S)) + size(R J<AS) < size(R)
Trang 18Tóm tắt thuật toán
Thuật toán tối ưu hóa phân tán INGRES được dẫn xuất từ thuật toán INGRES tập trung Hàm mục tiêu của thuật toán là làm giảm tối đa chi phi tổ hợp của thời gian truyền tin và thời gian đáp ứng
Đầu vào câu vấn tin được diễn tả bằng phép tính quan hệ bộ (ở dạng chuẩn hội) và thông tin lược đồ (kiểu mạng, vị trí và kích thước của mỗi mảnh) Giống như trong phiên bản tập trung của nó, chúng ta mô tả thuật toán tối ưu hóa vấn tin phân tán cho trường hợp câu vấn tin truy xuất (chỉ đọc) Thuật toán này được thực hiện tai một vị trí được gọi là vị trí chính là nơi câu vấn tin được kích hoạt Thuật toán, với tên gọi D-INGRẸS-QOA, ở thuật toán 6-3 sau
6.4 THUẬT TOÁN TỐI ƯU HÓA VẤN TIN PHÂN TÁN
6.4.1 Thuật toán INGRES phân tán
Vào: Câu vấn tin đa quan hệ MRQ
Ra: Kết quả của câu vấn tin đa quan hệ cuối cùng
Thuật toán 6-3 D-INGRES-QOA(Tự đọc Tài liệu)
Trang 19(Thuật toán 6-3 D-INGRES-QOA Tự đọc)
Begin
For mỗi ORQi khả tách trong MRQ Do //chạy tất cả các vấn tin một quan hệ//
Run(ORQi ) ; //(1) End-for
MRQ'-list REDUCE(MRQ) // MRQ’ gồm các vấn tin bất khả giản (2)//
While n 0 Do // n là số vấn tin bất khả giản ( 3 ) //
di chuyền mảnh F đến vị trí S End-for
n n - 1 End-while //Kết quả của MRQ' cuối cùng//
End //D-INGRES-QOA//