2.3. Tối ƣu hoỏ cõu hỏi trong cơ sở dữ liệu phõn tỏn
2.3.2 Một số nguyờn lý chung của tối ƣu hoỏ cõu hỏi
Thành cụng của cụng nghệ CSDL quan hệ trong việc xử lý dữ liệu là do tớnh dễ dựng của ngụn ngữ phi thủ tục SQL. Nhờ che dấu cỏc chi tiết cấp thấp về tổ chức vật lý của dữ liệu, cỏc ngụn ngữ CSDL quan hệ đó cho phộp biểu diễn được cỏc cõu truy vấn phức tạp một cỏch chớnh xỏc và đơn giản. Để cú cõu trả lời cho một cõu truy vấn, người sử dụng khụng cần phải xỏc định thứ tự tiến hành cỏc phộp toỏn. Việc này sẽ do bộ xử lý truy vấn thực hiện, đồng thời nú cũng thực hiện tối ưu hoỏ cõu truy vấn.
Việc xử lý, tối ưu hoỏ truy vấn cú tầm ảnh hưởng quan trọng tới hiệu năng xử lý dữ liệu của hệ thống, do vậy nú nhận được sự quan tõm trong cả mụi trường tập trung lẫn phõn tỏn. Tuy nhiờn bài toỏn xử lý truy vấn trong mụi trường phõn tỏn phức tạp hơn rất nhiều, do cú nhiều yếu tố ảnh hưởng đến hiệu năng của cỏc truy vấn phõn tỏn. Chẳng hạn, như việc quan hệ cú mặt trong cõu truy vấn cú thể bị phõn đoạn hay nhõn bản ở nhiều trạm, do vậy hệ thống phải tiờu tốn thờm chi phớ truyền thụng trong việc xử lý truy vấn, hay việc cú nhiều trạm phải truy xuất nờn thời gian đỏp ứng cú thể là chậm.
2.3.2.1 Mục tiờu của bài toỏn xử lý truy vấn [7].
Bộ xử lý truy vấn cú nhiệm vụ phõn tớch, biến đổi cỏc cõu truy vấn cấp cao (ở dạng cỏc phộp tớnh quan hệ) thành một cõu truy vấn tương đương ở cấp thấp hơn (dạng đại số quan hệ).
Với cõu truy vấn cấp thấp này việc cài đặt cỏc chiến lược thực thi sẽ được thực hiện. Việc biến đổi cõu truy vấn phải đỏp ứng được cả tớnh đỳng đắn, lẫn tớnh hiệu quả. Một biến đổi được coi là đỳng đắn nếu cõu truy vấn cấp thấp cho cựng một kết quả như cõu truy vấn cấp cao. Việc đưa ra được một chiến lược thực thi thớch hợp để đạt được tớnh hiệu quả lại là một bài toỏn khú. Một cõu truy vấn cấp cao cú thể được biến đổi thành nhiều cõu truy vấn cấp thấp tương đương, và mỗi chiến lược thực thi này lại tiờu tốn tài nguyờn hệ thống rất khỏc nhau. Việc khú khăn là phải tỡm ra một chiến lược nhằm hạ thấp tối đa việc tiờu dựng tài nguyờn.
Vớ dụ: Xột CSDL quan hệ “Cung cấp thiết bị cho một cụng ty”
Với cõu truy vấn “ Tỡm mó số cỏc nhà cung cấp đó cung cấp thiết bị cho cỏc đơn vị ở Miền bắc”
SELECT MANCC
FROM DONVI, CUNGCAP
WHERE DONVI.MADV = CUNGCAP.MADV AND MIEN = ”Miền bắc” Với cõu truy vấn trờn chỳng ta cú thể cú cỏc biểu thức đại số quan hệ tương đương như sau:
MANCC(MIEN = ”Miền bắc” DONVI.MADV = CUNGCAP.MADV(DONVI x CUNGCAP)) Hoặc:
MANCC(CUNGCAP (MIEN = ”Miền bắc” (DONVI)))
Trong biểu thức đại số thứ hai khụng cú chứa tớch Descartes nờn sẽ tiờu tốn ớt tài nguyờn hơn nờn sẽ được giữ lại để sử dụng. Trong mụi trường tập trung, chiến lược thực thi truy vấn cú thể được diễn tả chớnh xỏc bằng một mở rộng của đại số quan hệ. Nhiệm vụ chớnh của bộ xử lý truy vấn trong mụi trường tập trung là phải chọn ra một cõu truy vấn dạng biểu thức đại số tốt nhất trong cỏc cõu truy vấn tương đương. Đõy là một bài toỏn phức tạp khi số lượng cỏc quan hệ lớn, nờn núi chung là
Trong mụi trường phõn tỏn, cỏc biểu thức đại số quan hệ khụng đủ diễn tả cỏc chiến lược thực thi. Nú phải được bổ sung thờm cỏc phộp toỏn trao đổi dữ liệu giữa cỏc trạm. Cựng với việc chọn cỏc phộp toỏn đại số quan hệ, thỡ bộ xử lý truy vấn phõn tỏn cũng phải chọn cỏc trạm tốt nhất để xử lý dữ liệu. Do vậy việc tỡm ra lời giải cho bài toỏn chiến lược thực thi trở nờn khú khăn hơn nhiều.
Việc quan trọng của xử lý truy vấn là vấn đề tối ưu hoỏ. Trong cỏc chiến lược thực thi (kết quả của quỏ trỡnh biến đổi) thỡ một chiến lược sử dụng cỏc tài nguyờn của hệ thống tối ưu nhất sẽ được giữ lại.
Chỉ số đỏnh giỏ mức sử dụng hệ thống là tổng chi phớ được tớnh toỏn như sau:
Tổng chi phớ = Chi phớ xuất nhập + chi phớ CPU + chi phớ truyền.
Trong đú:
Chi phớ xuất nhập: là chi phớ / thời gian cần thiết cho cỏc thao tỏc xuất nhập dữ liệu.
Chi phớ CPU: là chi phớ / thời gian phải trả khi thực hiện cỏc thao tỏc trờn dữ liệu trong bộ nhớ chớnh.
Chi phớ truyền: là chi phớ / thời gian truyền thụng cần thiết cho việc trao đổi dữ liệu giữa cỏc trạm tham gia cõu hỏi.
Tuy nhiờn cũng cú cỏch đỏnh giỏ khỏc để đỏnh giỏ việc xử lý truy vấn là thời gian đỏp ứng (response time).
Trong mụi trường tập trung chi phớ xuất nhập và chi phớ CPU là hai yếu tố được đề cập đến khi tớnh toỏn chi phớ của cõu truy vấn. Trong mụi trường phõn tỏn yếu tố truyền thụng sẽ được quan tõm đến nhiều hơn, do giả thiết rằng chi phớ truyền thụng lớn hơn rất nhiều chi phớ xử lý cục bộ. Tuy nhiờn, trờn thực tế thỡ cỏc nghiờn cứu gần đõy đều xem xột đến việc tổ hợp của cả ba yếu tố trờn bởi vỡ chỳng đều cú giỏ trị đỏng kể trong tổng chi phớ ước lượng của cõu truy vấn.
2.3.2.2 Độ phức tạp của cỏc phộp toỏn đại số quan hệ.
Ta thấy rằng, kết quả của việc xử lý truy vấn được biểu diễn bằng một biểu thức đại số quan hệ. Do đú độ phức tạp của phộp toỏn đại số quan hệ cú sự ảnh
hưởng trực tiếp đến thời gian xử lý. Biết rừ độ phức tạp của phộp toỏn đại số quan hệ sẽ rất cú lợi trong việc lựa chọn cõy thực thi.
Độ phức tạp của phộp toỏn đại số quan hệ được định nghĩa đơn giản nhất là theo lực lượng của quan hệ, nú độc lập với việc cài đặt vật lý như phõn đoạn và cấu trỳc lưu trữ dữ liệu. Bảng sau sẽ cho ta thấy độ phức tạp của cỏc phộp toỏn đại số quan hệ. Phộp toỏn Độ phức tạp - Chọn - Chiếu (khụng loại bỏ trựng lặp) O(n) - Chiếu (loại bỏ trựng lặp) - Gộp nhúm O(n * log n) - Nối - Nửa nối - Chia - Cỏc phộp toỏn tập hợp O(n * log n) - Tớch Descartes O(n2)
Dựa vào bảng so sỏnh này ta cú thể đưa ra kết luận sau: Trước hết độ phức tạp cú tớnh tương quan so với lực lượng của quan hệ, phộp chọn làm giảm đi lực lượng của quan hệ cần phải thực hiện trước. Thứ hai cỏc phộp toỏn được sắp xếp theo độ phức tạp tăng dần để trỏnh thực hiện tớch Descartes, hay tớch Descartes để thực hiện sau.
2.3.2.3 Mụ tả bộ xử lý truy vấn.
Trong việc xử lý truy vấn trờn cỏc hệ CSDL thỡ ngụn ngữ sử dụng chủ yếu được biểu diễn dựa trờn cỏc phộp tớnh quan hệ, và trong quỏ trỡnh phõn ró cõu truy vấn thỡ chỳng được chuyển thành cỏc phộp tớnh đại số quan hệ. Trong mụi trường phõn tỏn thỡ ngụn ngữ đầu ra (output) được sử dụng chớnh là một dạng của đại số
communication primitive). Cỏc phộp toỏn này được cài đặt trực tiếp trong hệ thống. Việc xử lý truy vấn phải là sự ỏnh xạ hiệu quả từ ngụn ngữ đầu vào (input) thành ngụn ngữ đầu ra. Việc tối ưu hoỏ truy vấn là nhằm chọn ra được một chiến lược thực thi hiệu quả nhất trong khụng gian cỏc lời giải. Thụng thường khụng gian lời giải là rất lớn, nờn việc tỡm ra được lời giải tối ưu lại cú thể phải tiờu tốn rất nhiều thời gian và tài nguyờn hệ thống. Chi phớ cao cho việc tỡm lời giải tối ưu làm cho việc tối ưu hoỏ truy vấn cú ý nghĩa khi chỉ phải trả chi phớ một lần tối ưu hoỏ cho nhiều lần thực hiện cõu truy vấn đú. Khi đú chiến lược vột cạn thường được sử dụng [Selinger etal, 1979].
Nhằm làm giảm chi phớ cao cho tỡm kiếm vột cạn, cỏc chiến lược ngẫu nhiờn hoỏ đó được đề xuất như Iteractive Improvement [Swami,1989] và Stimulated Annealing [Ioannidis and Wong, 1987], để nhằm tỡm ra một giải phỏp tốt, khụng nhất thiết là tốt nhất, và trỏnh được chi phớ tối ưu hoỏ cao. Cú một cỏch khỏc hay được dựng để giảm chi phớ là dựng thuật giải heuristic, với tỏc dụng làm thu hẹp phạm vi tỡm kiếm. Một thuật giải heuristic quan trọng trong cỏc hệ phõn tỏn là thay cỏc nối bằng tổ hợp của cỏc nửa nối nhằm làm hạ thấp chi phớ truyền dữ liệu.
Tỏc giả Ullman J.D trong cỏc kết quả nghiờn cứu của mỡnh đó trỡnh bày những chiến lược tổng quan cho tối ưu hoỏ như sau:
Thực hiện phộp chọn sớm nhất cú thể: Nhằm làm giảm kớch thước của cỏc kết quả trung gian.
Tổ hợp phộp chọn xỏc định với phộp tớch Descartes thành phộp kết nối:
phộp kết nối, đặc biệt là phộp kết nối bằng cú chi phớ thực hiện thấp hơn so với phộp tớch Descartes trờn cựng hai quan hệ. Nếu kết quả của tớch Descartes RxS là đối số của phộp chọn, và phộp chọn lại cú liờn quan đến phộp so sỏnh giữa cỏc thuộc tớnh của R và S thỡ ta đưa về phộp kết nối để giảm chi phớ.
Tổ hợp dóy cỏc phộp toỏn một ngụi như phộp chọn và phộp chiếu: Bất kỳ dóy cỏc phộp toỏn một ngụi cú kết quả phụ thuộc vào cỏc bộ của một quan hệ độc lập thỡ cú thể nhúm cỏc phộp đú lại.
Tỡm cỏc biểu thức con chung trong một biểu thức: Nếu kết quả của một biểu thức con chung – biểu thức xuất hiện hơn một lần – là một quan hệ khụng lớn và nú cú thể được đọc từ bộ nhớ thứ cấp với ớt thời gian, thỡ nờn tớnh toỏn trước biểu thức đú chỉ một lần.
Tiền xử lý cỏc tệp: Nờn sắp xếp cỏc tệp và tạo cỏc tệp chỉ số, khi đú việc thực hiện cỏc phộp toỏn liờn quan đến hai tệp (phộp toỏn hai ngụi) sẽ nhanh hơn nhiều.
Đỏnh giỏ trước khi thực hiện phộp toỏn: Khi cần chọn trỡnh tự thực hiện cỏc phộp toỏn trong biểu thức, hay việc chọn một trong hai đối của phộp tớnh hai ngụi, thỡ ta nờn tớnh toỏn chi phớ thực hiện cỏc phộp toỏn đú (như số phộp tớnh, thời gian, dung lượng bộ nhớ theo kớch thước cỏc quan hệ,...) theo cỏc cỏch khỏc nhau. Từ đú sẽ quyết định phương ỏn cú chi phớ thấp.
Thời điểm tối ƣu hoỏ. Việc tối ưu hoỏ cõu truy vấn cú thể thực hiện tại những thời điểm khỏc nhau.
Tối ưu hoỏ kiểu tĩnh (vớ dụ R*). Được thực hiện trước khi thực thi truy vấn, nú được thực hiện vào lỳc biờn dịch, vỡ thế đõy là thời điểm thớch hợp cho phương phỏp vột cạn, phương ỏn này thớch hợp khi cỏc truy vấn được thực thi nhiều lần, do vậy chi phớ sẽ được bự đắp qua cỏc lần sử dụng. Nhưng phương phỏp này cũng khú khăn khi xỏc định kớch thước cỏc quan hệ kết quả trung gian, chỳng được đỏnh giỏ theo cỏc số liệu thống kờ của CSDL.
Tối ưu hoỏ kiểu động (vớ dụ Distributed INGRESS). Được tiến hành trong thời gian thực thi truy vấn (run time). Ở mỗi thời điểm của quỏ trỡnh thực thi, sẽ chọn ra thao tỏc kế tiếp tốt nhất dựa trờn thụng tin chớnh xỏc về kết quả của cỏc thao tỏc thực hiện trước đú. Ưu điểm chớnh của phương phỏp này là xỏc định được chớnh xỏc kớch thước của quan hệ trung gian, nhưng cũng cú nhược điểm là thao tỏc cú thể phải lặp đi lặp lại cho mỗi lần thực hiện truy vấn.
Cỏc phương phỏp hỗn hợp (vớ dụ MERMAID) cũng được thử nghiệm nhằm cung cấp những ưu điểm của phương phỏp tĩnh, đồng thời trỏnh được cỏc vấn đề do
nhưng khi phỏt hiện ra lỗi trong việc xỏc định kớch cỡ thỡ sử dụng phương phỏp động trong thời gian thực thi.
Như chỳng ta đó biết số liệu thống kờ làm tăng hiệu quả của tối ưu hoỏ truy vấn tĩnh cũng như động. Trong CSDL phõn tỏn, số liệu thụng kờ được tớnh theo đoạn, và gồm kớch thước, lực lượng cũng như kớch thước và số lượng cỏc giỏ trị phõn biệt của mỗi thuộc tớnh. Độ chớnh xỏc của số liệu thống kờ cú được là nhờ vào sự cập nhật theo định kỳ. Đối với phương phỏp tĩnh sự thay đổi lớn của số liệu thống kờ cú thể dẫn đến việc phải thực hiện lại tối ưu hoỏ.
Phần lớn cỏc hệ thống đều sử dụng phương phỏp quyết định tập trung, việc ra quyết định chỉ do một trạm đảm nhiệm. Phương ỏn này đơn giản nhưng đũi hỏi phải cú thụng tin đầy đủ về toàn bộ CSDL. Trong cỏch tiếp cận phõn tỏn thỡ nhiều trạm cựng tham gia vào việc ra quyết định, và chỉ cần cú thụng tin cục bộ. Cỏc phương phỏp hỗn hợp cũng hay được sử dụng khi đú một trạm ra cỏc quyết định chớnh và cỏc trạm khỏc cú thể đưa ra cỏc lựa chọn cục bộ. Vớ dụ như System R* [Williams etal.,1982] sử dụng cỏch tiếp cận hỗn hợp.
Yếu tố cấu hỡnh mạng (network topology), cũng cú ảnh hưởng quan trọng đến quỏ trỡnh tối ưu hoỏ. Trong mạng WAN với tớnh chất là băng thụng nhỏ, tốc độ truyền chậm, thỡ chi phớ truyền dữ liệu được đỏnh giỏ là cú trọng lượng trong việc tớnh toỏn hàm chi phớ. Trong mạng LAN với băng thụng lớn, tốc độ truyền cao, thỡ tất cả cỏc chi phớ phải được tớnh đến trong việc tớnh toỏn hàm chi phớ.
Trong CSDL phõn tỏn cỏc đoạn được nhõn bản cũng được tận dụng để nhằm làm hạ thấp số lần truyền. Và một đặc tớnh quan trọng của phộp nửa nối là làm giảm đi kớch thước của quan hệ nờn sử dụng chỳng cú thể làm giảm đi dữ liệu cần truyền thụng giữa cỏc trạm. Chỳng đặc biệt cú ớch trong ngữ cảnh mạng cú tốc độ chậm. Tuy vậy phộp nửa nối vẫn cú ớch trong ngữ cảnh tốc độ mạng ngày càng nhanh hiện nay. Vỡ vậy một số thuật toỏn xử lý truy vấn gần đõy đều tỡm cỏch chọn ra một tổ hợp tối ưu giữa phộp nối và nửa nối [Ozsoyogly and Zhou, 1987], [Wah and Lien, 1985]
Bài toỏn xử lý truy vấn được phõn ró thành nhiều bài toỏn con tương ứng với cỏc tầng khỏc nhau trong xử lý vấn tin phõn tỏn (hỡnh 2.7).
Hỡnh 2.7 Lược đồ tổng quỏt xử lý truy vấn phõn tỏn
Nguồn của quỏ trỡnh xử lý truy vấn là cõu truy vấn dạng phộp tớnh trờn cỏc quan hệ phõn tỏn. Cỏc tầng tham gia vào việc phõn tớch xử lý truy vấn thành một dóy tối ưu cỏc phộp toỏn cục bộ là: Phõn ró cõu truy vấn, định vị dữ liệu, tối ưu
Lược đồ toàn cục Lược đồ toàn cục Lược đồ cục bộ Số liệu trờn cỏc đoạn Phõn ró truy vấn Định vị dữ liệu
Tối ưu hoỏ toàn cục
Tối ưu hoỏ cục bộ Truy vấn dạng phộp tớnh trờn
cỏc quan hệ phõn tỏn
Truy vấn dạng đại số trờn cỏc quan hệ phõn tỏn
Truy vấn theo đoạn
Truy vấn theo đoạn đó tối ưu kốm với cỏc phộp toỏn truyền
Truy vấn cục bộ đó tối ưu
T R Ạ M Đ IỀ U K H IỂ N C Á C T R Ạ M C Ụ C B Ộ
ứng với quỏ trỡnh viết lại truy vấn. Ba tầng đầu tiờn được thực hiện bởi một trạm trung tõm và sử dụng thụng tin toàn cục, tầng thứ tư được thực hiện tại cỏc trạm cục bộ. Cỏc tầng này sẽ được trỡnh bày chi tiết ở phần sau.
2.3.2.4 Phõn ró truy vấn và định vị dữ liệu [2, 6, 9].
Hai tầng phõn ró truy vấn và định vị dữ liệu được thực hiện liờn tiếp và chịu trỏch nhiệm biến đổi cõu truy vấn ở dạng phộp tớnh quan hệ ban đầu thành cõu truy vấn dạng đại số quan hệ được định nghĩa trờn cỏc đoạn.
Phõn ró truy vấn.
Phõn ró cõu truy vấn chịu trỏch nhiệm ỏnh xạ cõu truy vấn phõn tỏn dạng phộp tớnh quan hệ thành cõu truy vấn đại số trờn quan hệ toàn cục. Cỏc kỹ thuật được sử dụng ở phần này là những kỹ thuật của cỏc Hệ quản trị CSDL tập trung. Cõu truy vấn thu được được coi như đạt “chất lượng” nếu như cỏc tầng sau cú sử dụng cỏc thuật toỏn tầm thường thỡ vẫn trỏnh được cỏc thực hiện kộm hiệu quả nhất.
Trong phần này chỳng ta giả sử là cõu truy vấn đó nhập đỳng cỳ phỏp. Khi