Tải bản đầy đủ (.doc) (42 trang)

CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ MỘT SỐ NGUYÊN LÝ CHUNG CỦA TỐI ƯU HOÁ TRUY VẤN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (976.96 KB, 42 trang )

MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG 1: CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ MỘT SỐ NGUYÊN LÝ
CHUNG CỦA TỐI ƯU HOÁ TRUY VẤN 3
1. Các khái niệm về CSDL PT 4
2. Các mục tiêu của hệ quản trị CSDL PT 5
3. Kiến trúc hệ quản trị CSDL PT 6
4. Một số nguyên lý chung của tối ưu hóa truy vấn 8
4.1. Mục tiêu của bài toán xử lý truy vấn 9
4.2. Độ phức tạp của các phép toán đại số quan hệ 13
4.3. Mô tả bộ xử lý truy vấn 13
4.4 Phân rã truy vấn 17
4.4.1 Đưa về dạng chuẩn tắc (normalization) 17
4.4.2 Phân tích (analysis) 18
4.4.3. Loại bỏ dư thừa (simplification) 20
4.4.4. Viết lại truy vấn (restructuring) 21
CHƯƠNG 2 : TỐI ƯU HÓA TRUY VẤN PHÂN TÁN 24
2.1. Tối ưu hóa truy vấn 25
2.1.1. Không gian tìm kiếm 25
2.1.2. Chiến lược tìm kiếm 27
2.1.3. Mô hình chi phí 28
2.2. Các thuật toán tối ưu hóa truy vấn trong môi trường phân tán 31
2.2.1. Các thuật toán dựa trên sắp xếp thứ tự nối (Ordering Joins) 32
2.2.1.1. Thuật toán INGRES phân tán 34
2.2.1.2. Thuật toán của System R* 36
2.3. Kết luận 39
TÀI LIỆU THAM KHẢO 41
LỜI NÓI ĐẦU
1
Cơ sở dữ liệu (CSDL) là một trong những lĩnh vực được quan tâm
nhiều trong công nghệ thông tin. Ra đời từ những năm 60 đến


nay, đã xuất hiện nhiều thế hệ quản trị CSDL, và cũng đã có
nhiều ứng dụng trong khoa học kỹ thuật cũng như trong các
ngành kinh tế khác.
Việc nghiên cứu CSDL đã và đang phát triển ngày càng phong
phú, đa dạng. Từ những năm 70, mô hình dữ liệu quan hệ do E.F.
Codd đưa ra đã tạo một cơ sở vững chắc cho các vấn đề nghiên
cứu về CSDL. Với ưu điểm về tính cấu trúc, và khả năng hình thức
hóa phong phú, CSDL quan hệ dễ dàng mô phỏng các hệ thống
thông tin đa dạng trong thực tiễn, làm tăng khả năng xử lý, quản
trị, khai thác dữ liệu, thông tin. Trên thực tế nhiều hệ quản trị
CSDL thương mại, xây dựng trên mô hình quan hệ, đã và đang
được lưu hành, sử dụng rộng rãi trên thị trường như:DBASE,
ORACLE, MS SQL…
Cho đến nay đã có hàng loạt các vấn đề về CSDL được nghiên
cứu, giải quyết. Với mục đích tìm hiểu để nâng cao khả năng ứng
dụng của của các hệ CSDL, bài thu hoạch này tập trung vào việc
nghiên cứu vấn đề “tối ưu hóa câu truy vấn trong CSDL phân
tán”. CSDL phân tán nói riêng và các hệ phân tán nói chung là
một lĩnh vực nghiên cứu không mới, nhưng gần đây cùng với sự
phát triển nhanh chóng và mạnh mẽ của công nghệ truyền thông,
mạng Internet và đặc biệt là xu thế phát triển của thương mại
điện tử, thì CSDL phân tán đã trở thành một lãnh vực thu hút
nhiều sự quan tâm của các nhà nghiên cứu cũng như các nhà sản
xuất phần mềm.
Như ta đã biết, thành công ngày càng tăng của công nghệ CSDL
quan hệ trong việc xử lý dữ liệu một phần là do tính dễ dùng khả
năng khai thác, tìm kiếm dữ liệu của các ngôn ngữ phi thủ tục
(như SQL), và chính nó đã cải thiện đáng kể công việc phát triển
ứng dụng và khả năng sáng tạo của người dùng. Các ngôn ngữ
phi thủ tục của CSDL quan hệ đã cho phép diễn tả câu truy vấn

phức tạp một cách chính xác và đơn giản. Đặc biệt là để có được
câu trả lời cho một câu truy vấn thì người sử dụng không cần phải
xác định chính xác trình tự tiến hành các thao tác/phép toán
trong một câu truy vấn. Trình tự này được xử lý bởi Bộ xử lý truy
vấn (query processor) của hệ quản trị CSDL, và đó là bài toán xử
lý truy vấn hay tối ưu hóa truy vấn.
Tối ưu hóa truy vấn là việc xác định một chiến lượcthực hiện truy
vấn sao cho có thể cực tiểu hóa được hàm chi phí. Đây là bài toán
khó, đặc biệt là trong môi trường phân tán bài toán này thuộc lớp
NP-Hard. Để tránh một chi phí tối ưu hóa quá lớn thì cách tiếp cận
2
dùng các heuristic được sử dụng để có thể đạt được một chiến
lược thực thi gần tối ưu. Các yếu tố cần được xem xét khi giải bài
toán này là: sự phân tán dữ liệu, chi phí xử lý cục bộ, chi phí
truyền…
Các yếu tố quyết định đến việc cực tiểu hàm chi phí có thể có
nhiều, nhưng những yếu tố quan trọng nhất là trình tự thực hiện
tối ưu các phép nối, việc chọn các bản sao, các mảnh phải truy
xuất, cũng như việc chọn các trạm thực hiện và việc sử dụng các
giải thuật truy xuất dữ liệu cục bộ và phân tán.
CHƯƠNG 1: CƠ SỞ DỮ LIỆU PHÂN TÁN VÀ MỘT SỐ NGUYÊN LÝ
CHUNG CỦA TỐI ƯU HOÁ TRUY VẤN
Cơ sở dữ liệu phân tán là sự hợp nhất của hai cách tiếp cận xử lý
dữ liệu dường như đối lập nhau: công nghệ CSDL và công nghệ
mạng máy tính. Một trong những mục đích, động cơ chính của
việc sử dụng các hệ CSDL là việc tích hợp các dữ liệu, giao tác
của một xí nghiệp, tổ chức và cho phép truy xuất tập trung, do
vậy có thể điều khiển được các truy xuất đến dữ liệu đó. Còn
công nghệ mạng lại đi ngược lại với mọi nỗ lực tập trung hóa.
Mấu chốt của vấn đề là mục tiêu quan trọng của công nghệ CSDL

là sự tích hợp mà không phải là sự tập trung hóa, như vậy ta vẫn
có thể có được sự tích hợp mà không cần sự tập trung hóa và đó
chính là mục tiêu của CSDL phân tán (CSDL PT).
Chúng ta có thể định nghĩa một CSDL PT là một tập hợp nhiều
CSDL có liên đới logic và được phân bố trên một mạng máy tính.
Vậy hệ quản trị CSDL PT được định nghĩa là một hệ thống phần
mềm cho phép quản lý các CSDL PT, và làm cho việc phân tán trở
nên trong suốt đối với người sử dụng.
Với các hệ CSDL PT chúng ta dễ dàng nhận thấy những ưu điểm
tiềm năng như sau:
 Quản trị dữ liệu phân tán với nhiều mức trong suốt khác
nhau. Hệ quản trị CSDL PT cung cấp khả năng trong suốt
phân tán (distribution transparent) với ý nghĩa là che dấu
các chi tiết như dữ liệu được lưu trữ ở đâu trong hệ
thống… Hệ quản trị CSDL PT có thể cung cấp các khả
năng trong suốt sau:
 Trong suốt phân tán, hay trong suôt mạng
 Trong suốt nhân bản
 Trong suốt phân mảnh
 Tăng tính tin cậy và tính sẵn sàng.
3
 Cho phép dùng chung dữ liệu trong khi vẫn duy
trì được biện pháp điều khiển cục bộ.
 Cải tiến hiệu năng.
 Tính dễ mở rộng.
1. Các khái niệm về CSDL PT
Ở mức phần cứng vật lý, những nhân tố chính phân biệt một hệ CSDL PT với một
hệ CSDL tập trung là:
Có nhiều máy tính duợc gọi là trạm hay nút (node)
Các trạm phải duợc kết nối bởi một kiểu mạng truyền thông nào dó dể truyền dữ

liệu và các lệnh giữa các trạm.
Hình 1. 1 CSDL trung tâm trên một mạng

Hình 1. 2 Môi truờng của hệ CSDL PT
Một hệ quản trị CSDL PT là một tập các phần mềm hệ thống bao
gồm các phần mềm quản trị các dữ liệu phân tán, các phần mềm
quản trị truyền thông và các hệ quản trị CSDL địa phương/ cục bộ
lưu trú trên mỗi trạm của hệ CSDL PT.
4
Ngoài chức năng của các hệ quản trị CSDL và của phần mềm quản trị truyền
thông, hệ quản trị CSDL PT còn có các chức năng đặc biệt sau:
 Quản lý một từ điển dữ liệu tổng thể lưu trữ thông tin liên
quan đến các dữ liệu phân tán
 Định nghĩa các dữ liệu phân tán.
 Kiểm tra ngữ nghĩa của các dữ liệu phân tán.
 Định giá các câu truy vấn phân tán do người dùng đưa ra.
 Quản lý các giao tác phân tán.
 Bảo mật giao tác và dữ liệu.
 Phục hồi CSDL phân tán, cung cấp khả năng phục hồi dữ
liệu từ những trạm (site) bị lỗi (sập).
 Quản trị nhân bản dữ liệu.
Một tính chất quan trọng của các CSDL PT là tính thuần nhất hay
không thuần nhất. Một CSDL PT thuần nhất (homogeneous DDB)
có được bằng cách chia một CSDL thành một tập các CSDL cục
bộ, mỗi CSDL cục bộ này được quản trị bởi cùng một hệ quản trị
CSDL. Một CSDL PT thuần nhất thường là kết quả của cách tiếp
cận thiết kế trên xuống, trong đó ta thiết kế một CSDL PT từ một
CSDL tập trung.
Một CSDL PT không thuần nhất (heterogeneous DDB) là một
CSDL PT có được bằng cách tích hợp một tập các CSDL cục bộ (có

thể được xây dựng từ các mô hình dữ liệu khác nhau) được quản
trị bởi các hệ quản trị CSDL khác nhau, thành một CSDL duy nhất.
2. Các mục tiêu của hệ quản trị CSDL PT
Sự độc lập dữ liệu và trong suốt phân bố. Người dùng có thể
không quan tâm đến sự phân tán dữ liệu. Các thông tin này được
lưu giữ trong từ điển dữ liệu (catalog), và được hệ quản trị CSDL
PT sử dụng để định vị dữ liệu. Đây là một dạng trong suốt cơ bản
cần có trong một hệ CSDL PT, nó liên quan đến tính độc lập dữ
liệu (data independence) và làm tăng khả năng thích ứng của các
ứng dụng đối với những thay đổi trong định nghĩa và tổ chức của
dữ liệu và ngược lại. Khi đó không có sự khác biệt nào giữa các
ứng dụng chạy trên CSDL tập trung với ứng dụng chạytrên CSDL
PT.
Trong suốt phân mảnh. Việc truy cập tới dữ liệu thường được xác
định trên các quan hệ con (thu được từ việc chia nhỏ các quan hệ
gốc) được gọi là các mảnh (fragment). Việc phân mảnh (ngang,
dọc, hỗn hợp) làm tăng hiệu năng, tính sẵn sàng, độ tin cậy của
CSDL PT. Trong suốt phân mảnh che dấu sự phân đoạn đối với
người dùng.
Trong suốt nhân bản. Một giải pháp cho sự tin cậy dữ liệu là việc
tạo ra dư thừa dữ liệu dưới một hình thức nào đó. Mỗi mảnh dữ
5
liệu được sao lưu thành hai hay nhiều bản, mỗi bản được lưu trên
một trạm khác nhau, được gọi là sự nhân bản. Nó giúp hệ CSDL
PT nâng cao hiệu năng, độ tin cậy và tính sẵn sàng. Tuy nhiên
việc nhân bản sẽ gây khó khăn cho việc cập nhật CSDL, và việc
duy trì và quản lý các bản sao là phức tạp và tốn kém. Việc trong
suốt nhân bản là việc che dấu khiến người dùng chỉ nhìn thấy các
quan hệ không có nhân bản.
Tính trong suốt đối với hệ quản trị CSDL. Cho phép che dấu đối

vói người dùng việc các hệ quản trị CSDL cục bộ có thể khác
nhau.
Tính tự trị của các trạm. Đây là mục tiêu cho phép mỗi trạm điều
khiển và thao tác dữ liệu địa phương của nó độc lập với các trạm
khác. Do đó việc quản trị của CSDL PT có thể hoàn toàn phi tập
trung.
Tính mở rộng. Là khả năng mở rộng bằng việc đưa thêm các trạm
mới vào mạng với ảnh hưởng tối thiểu lên các CSDL cục bộ và các
chương trình ứng dụng hiện có.
3. Kiến trúc hệ quản trị CSDL PT
Có nhiều kiểu kiến trúc CSDL như, các hệ CSDL client/server, các
phức hệ CSDL, hay các CSDL trong môi trường phân tán đầy đủ
(không có sự phân biệt nào giữa client và server ) hay còn gọi là
các hệ phân tán ngang hàng. Và kiểu kiến trúc này cũng là kiểu
được tập trung thảo luận ở phần này.
Các hệ phân tán ngang hàng. Tổ chức vật lý trên mỗi máy có
thể rất khác nhau, do đó ta cần phải có một định nghĩa tổ chức
dữ liệu vật lý cho mỗi trạm, mà chúng ta gọi là lược đồ trong cục
bộ (LIS). Hình ảnh về toàn thể CSDL được mô tả bởi lược đồ khái
niệm toàn cục (GCS), nó mô tả cấu trúc logic của dữ liệu ở mọi vị
trí. Để xử lý việc phân mảnh và nhân bản ta sử dụng lược đồ khái
niệm cục bộ (LCS), mô tả tổ chức logic của dữ liệu tại mỗi trạm.
Do đó trong kiến trúc này lược đồ khái niệm toàn cục là “hợp” của
các lược đồ khái niệm cục bộ.
Và các ứng dụng truy xuất dữ liệu thông qua lược đồ ngoài (ES),
được định nghĩa là một tầng nằm trên lược đồ khái niệm toàn cục.
Các khái niệm trên được mô tả trong hình 1.3
Các thành phần cụ thể của một hệ CSDL PT . Ở đây hệ QT
CSDL PT gồm 2 thành phần (mô tả trong Hình 1.4). Một thành
phần xử lý mọi tương tác với người sử dụng là Bộ xử lý tiếp nhận

người dùng (User Processor), còn thành phần kia lo việc xử lý dữ
liệu (Data Processor).
6
Hình 1. 3 Kiến trúc tham chiếu CSDL PT
Thành phần đầu tiên bao gồm:
Bộ giao tiếp người dùng (user interface handler) diễn dịch các
lệnh của người sử dụng, và định dạng dữ liệu để chuyển cho
người sử dụng các kết quả.
Bộ kiểm soát dữ liệu ngữ nghĩa (semantic data controller) sử dụng
các ràng buộc toàn vẹn (integrity constraints) và thông tin cấp
phép, quyền hạn (authorization), được định nghĩa như thành phần
của lược đồ khái niệm toàn cục, để kiểm tra, xác định xem các
câu truy vấn có xử lý được hay không.
Bộ tối ưu truy vấn toàn cục (Global query optimizer) xác định một
chiến lược hoạt động để giảm thiểu chi phí, và phiên dịch các câu
truy vấn toàn cục thành câu truy vấn cục bộ thông qua việc sử
dụng các lược đồ toàn cục, khái niệm cục bộ và thư mục toàn
cục, ngoài ra còn chịu trách nhiệm tạo ra một chién lược thực thi
tốt cho các phép nối phân tán.
Bộ theo dõi hoạt động toàn cục (Global execution Monitor) có
trách nhiệm điều phối việc thực hiện phân tán các yêu cầu của
người dùng và cũng được gọi là bộ quản lý giao dịch phân tán
(Distributed transaction manager).
Thành phần thứ hai gồm:
Bộ tối ưu truy vấn cục bộ (Local query processor) chịu trách
nhiệm chọn ra một đường truy xuất thích hợp nhất để truy xuất
các dữ liệu.
Bộ khôi phục cục bộ (Local recovery manager) đảm bảo cho các
CSDL cục bộ duy trì được tính nhất quán khi có sự cố xảy ra.
7

Bộ hỗ trợ thực thi (Runtime support processor) truy xuất CSDL tùy
vào các lệnh trong lịch (schedule) do bộ tối ưu vấn tin sinh ra. Nó
là giao diện với bộ điều hành và chứa bộ quản lý vùng đệm CSDL
(database bu|er manager), chịu trách nhiệm quản lý vùng đệm
và quản lý việc truy xuất dữ liệu.
Một điểm lưu ý là hai thành phần này chỉ là phân chia về mặt tổ
chức chứ không phải bắt buộc phải cài đặt trên các trạm khác
nhau. Tuy nhiên cũng có những gợi ý tách biệt những trạm chỉ
thực hiện truy vấn ra khỏi những hệ thống có đầy đủ chức năng,
và khi đó các trạm này chỉ cần có bộ xử lý tiếp nhận người dùng.
Hình 1. 4 Các thành phần của một hệ quản trị CSDL PT
4. Một số nguyên lý chung của tối ưu hóa truy vấn
Ở phần này chúng ta sẽ thảo luận những kỹ thuật được sử dụng
trong hệ QT CSDL để xử lý, tối ưu hóa và thực hiện các câu truy
vấn bậc cao – như SQL. Thành công của công nghệ CSDL quan hệ
trong việc xử lý dữ liệu một phần là do tính dễ dùng của ngôn ngữ
8
phi thủ tục như 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 (Query processor) thực hiện, đồng thời nó cũng
thực hiện tối ưu hóa câu truy vấn.
Việc xử lý, tối ưu hóa 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ả ngữ cảnh tập trung lẫn phân tán. Tất nhiên bài
toán xử lý truy vấn trong môi trường phân tán có rất nhiều phức
tạp, 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. Ví dụ như việc quan hệ có mặt trong câu truy vấn

có thể bị phân mảnh 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à lâu.
4.1. Mục tiêu của bài toán xử lý truy vấn
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 một 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ảitì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.
Thí dụ 1.1:
9
Để tiện miêu tả ta sẽ sử dụng một CSDL mẫu mô hình hóa cho một công ty dể làm
ví dụ. Các thực thể đuợc mô hình hóa là nhân viên -NHANVIEN và các dự án -
DUAN. Với mỗi nhân viên thì có những thông tin sau: mã số nhân viên – MSNV,
tên nhân viên – TENNV, nghề nghiệp - NNGH, lương – LUONG, mã số dự án –
MSDA mà nhân viên dó đang làm việc, nhiệm vụ - NVU trong dự án đó, thời gian
– TGIAN được phân công trong dự án tính theo tháng. Tương tự như vậy với mỗi
dự án thì cũng có nhiều thông tin như: MSDA, tên dự án – TENDA, ngân sách dự
án – NSDA, địa điểm tiến hành dự án - DD.
Các lược đồ quan hệ cho CSDL này có thể được định nghĩa như
sau:

NHANVIEN(MSNV,TENNV,NNGH,LUONG,MSDA,NVU,TGIAN)
DUAN(MSDA,TENDA,NSDA,DDDA)
Sau khi thực hiện các bước chuẩn hóa ta thu được:
NHANVIEN(MSNV,TENNV,NNGH)
NHANVIEN(MSNV,TENNV,NNGH)
MUCLUONG(NNGH,LUONG) DUAN(MSDA,TENDA,NSDA,DD)
PHANCONG(MSNV,MSDA,NVU,TGIAN)
Với câu truy vấn “Tìm tên các nhân viên đang quản lý một dự án
có thời gian lớn hơn 37 tháng”
SELECT TENNV
FROM NHANVIEN, PHANCONG
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND TGIAN > 37
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:
Π

TENNV

TGIAN>37

NHANVIEN.MSNV=PHANCONG.MSNV
(NHANVIEN
×
PHANCONG))
Và:
Π
TENNV
(

NHANVIEN




MSNV

TGIAN>37
(PHANCONG)))
Tất nhiên do 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à chúng ta
chỉ hướng đến là tìm được một lời giải tốt (gần tối ưu).
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. Và 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
10
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.
Xét lại ví dụ trên trong môi trường phân tán:
Thí dụ 1.2:
Các mảnh được cấp phát tại các trạm 1, 2, 3, 4 và kết quả được
truy xuất tại trạm 5

Trạm 1: PHANCONG
1
= σ
MSNV ≤ “E3”
( PHANCONG)
Trạm 2: PHANCONG
2
= σ
MSNV > “E3”
( PHANCONG)
Trạm 3: NHANVIEN
1
= σ
MSNV ≤ “E3”
(

NHANVIEN )
Trạm 4: NHANVIEN
2
= σ
MSNV ≤ “E3”
(

NHANVIEN)
Ta có chiến lược A tại Trạm 5:
Và chiến lược B như sau:
Trạm 1
Kết quả = (NHANVIEN
1


NHANVIEN
2
)


MSVGIAN>37
(PHANCONG
1
∪PHANCONG
2
)
PHANCONG PHANCONG
2
NHANVIEN
1
NHANVIEN
2
Trạm 1 Trạm 2 Trạm 3 Trạm 4
Hình 2. 1 Các chiến lược thực thi
Để đánh giá được việc tiêu dùng tài nguyên của hai chiến lược
này, ta dùng mô hình chi phí sau:
11
Giả sử độ lớn của quan hệ NHANVIEN và PHANCONG tương ứng
là 400 và 1000 bộ (tuple) và chi phí truy xuất bộ (tuple access
cost) tupacc là một đơn vị, chi phí truyền bộ (tuple transfer cost)
tuptrans là 10 đơn vị
Với phương án A ta có:
1. Tạo ra PHANCONG’: (10+10)*tupacc 20
2. Truyền PHANCONG’ (10+10)*tuptrans 200
đến vị trí chứa

NHANVIEN
3. Tạo NHANVIEN’ (10+10)*tupacc*2 40
4. Truyền NHANVIEN’ (10+10)*tuptrans 200
đến vị trí 5 Tổng chi phí 460
Đối với phương án B ta có:
1. Truyền NHANVIEN 400*tuptrans
4000
đến vị trí 5
2. Truyền PHANCONG
đến vị trí 5 1000*tuptrans
10000
3. Tạo PHANCONG’ 1000*tupacc 1000
4. Nối NHANVIEN và PHANCONG’ 400*20*tupacc 8000
Tổng chi phí 23000
Ở phương án B ta thấy rõ ràng là tổng chi phí lớn hơn rất nhiều so
với phương án A. Như đã nêu ở trên, mục tiêu của việc xử lý truy
vấn trong môi trường phân tán là biến đổi câu truy vấn cấp cao
trên CSDL PT thành các câu truy vấn (ở ngôn ngữ cấpthấp) trên
các CSDL cục bộ.
Và một việc quan trọng của xử lý truy vấn là vấn đề tối ưu hóa.
Trong các chiến lược thực thi (kết quả của các 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 thì sẽ được giữ lại.
Chỉ số đánh giá mức sử dụng hệ thống là tổng chi phí (total cost)
được tính toán như
sau:
Tổng chi phí= chi phí xuất nhập + chi phí CPU + chi phí truyền.
Với 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. 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.

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).
Các yếu tố này có thể được đánh giá khác nhau trong các môi
trường phân tán khác nhau. Trong môi trường tập trung hai thành
12
phần đầu tiên (trong biểu thức tính tổng chi phí) là những yếu tố
duy nhất được đề cập đến khi tính toán chi phí của câu truy vấn.
Trong môi trường mạng WAN thì yếu tố truyền tin sẽ được quan
tâm đến nhiều hơn, do giả thiết rằng chi phí truyền lớn hơn rất
nhiều chi phí xử lý cục bộ.
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 thành phần 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.
4.2. Độ phức tạp của các phép toán đại số quan hệ.
Ở phần này chúng ta coi đại số quan hệ là một phương pháp cơ
bản để biểu diễn kết quả của việc xử lý truy vấn. Do vậy ta thấy
rõ ràng là sự 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ý. Những nguyên tắc sau đây là
rất có lợi trong việc chọn lựa ra cây thực thi.
Độ phức tạp được định nghĩa đơn giản nhất là theo lực lượng của
quan hệ (cardinality), nó độc lập với việc cài đặt vật lý như phân
mảnh và cấu trúc lưu trữ dữ liệu. Bảng sau cho ta thấy sự so sánh
độ phức tạp của các phép toán quan hệ:
Dựa trên bảng so sánh này ta có thể sơ lược rút ra kết luận như
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ệ, các thao tác có tính chọn làm giảm đi lực lượng cần
phải được ưu tiên thực hiện trước. Thứ hai các phép toán cần phải
được sắp xếp theo độ phức tạp để tránh thực hiện tích Descartes,
hay để thực hiện sau.
4.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ữ
13
đầu ra (output) được sử dụng chính là một dạng của đại số quan
hệ được tăng cường thêm các yếu tố truyền tin (nguyên thủy
truyền tin-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 hóa 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ì
không gian lời giải có thể 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
hóa truy vấn có ý nghĩa khi chỉ phải trả chi phí một lần tối ưu hóa
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 hóa đã được đề xuất như Iteractive Improvement
[Swami,1989] và Stimulated Annealing [Ioannidis and
Wong,1987], để nhằm tim 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 hóa 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 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ối nửa nhằm làm hạ thấp chi phí truyền dữ liệu.
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 hóa 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 (như phép chọn, phép
chiếu) 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.
14
Tiền xử lý các tệp: Cần sắp xếp các tệp và thiết lập 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 hóa. Việc tối ưu hóa 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 hóa 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
có 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 hóa 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 các đánh giá không chính xác
gây ra. Về cơ bản vẫn sử dụng phương pháp tĩnh, nhưng khi phát
hiện ra lỗi trong việc xác định kich 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 hóa 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 mảnh, 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 (distinct value). Độ 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 hóa.
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
15

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ộ. Chẳng hạn 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 hóa. 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 PT các mảnh đượ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à do đặc tính quan trọng của
phép nối nửa 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 trao đổi 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 nối nửa 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ối nửa
[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.
16
Hình 2. 2 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 hóa toàn cục, và tối
ưu hóa cục bộ. Phân rã truy vấn và cục bộ hóa dữ liệu tương ứng
với quá trình viết lại câu 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
bàn luận chi tiết ở phần sau.
4.4 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 về
cú pháp. Khi kết thúc giai đoạn này câu truy vấn thu được sẽ
đúng về ngữ nghĩa và đạt chất lượng.
Các bước phân rã truy vấn:
1) Đưa về dạng chuẩn tắc 3) Loại bỏ dư thừa
2) Phân tích 4) Viết lại truy vấn
4.4.1 Đưa về dạng chuẩn tắc (normalization)
Mục đích của chuẩn hóa là biến đổi câu truy vấn thành một dạng
chuẩn để xử lý tiếp. Với các ngôn ngữ quan hệ như SQL, biến đổi
quan trọng nhất là lượng từ hóa vấn tin, có thể là một vị từ phi
lượng từ với độ phức tạp nào đó, với tất cả các lượng từ cần thiết
đặt phía trước.
Có hai dạng chuẩn có thể có cho vị từ:
Dạng chuẩn hội (conjunctive normal form) là hội của các tuyển:
) ( ) (
2111211 mnmmn

pppppp ∨∨∨∧∧∨∨∨
Dạng chuẩn tuyển (disjunctive normal form) là tuyển của các hội:
) ( ) (
2111211 mnmmn
pppppp
∨∨∨∧∧∨∧
Biến đổi các vị từ phi lượng từ là chuẩn hóa bẳng cách sử dụng
các qui tắc
tương đương đã biết trong toán logic:
1)
1221
pppp ∧⇔∧
17
2)
1221
pppp ∨⇔∨
3)
321321
)()( pppppp ∧∧⇔∧∧
4)
321321
)()( pppppp ∨∨⇔∨∨
5)
)()()(
3121321
ppppppp ∧∨∧⇔∨∧
6)
)()()(
3121321
ppppppp ∨∧∨⇔∧∨

7)
2121
)( pppp ∨¬¬⇔∧¬
8)
2121
)( pppp ∧¬¬⇔∨¬
9)
pp ⇔¬¬ )(
Thí dụ 2.3:
Câu truy vấn “Tìm tên các nhân viên đang làm việc ở dự án P1
trong 12 hoặc 24 tháng”. Viết dưới dạng SQL:
SELECT TENNV
FROM NHANVIEN, PHANCONG
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=”P1”
AND TGIAN=12 OR TGIAN=24
Viết dưới dạng chuẩn hội:
NHANVIEN.MSNV=PHANCONG.MSNV

PHANCONG.MSDA=”P1”

(TGIAN =12

GIAN=24)
Viết dưới dạng chuẩn hội:
(NHANVIEN .MSNV= PHANCONG. MSNV

PHANCONG. MSDA=”
P1”


TGIAN=12)

( NHANVIEN. MSNV= PHANCONG.MSNV

HANCONG.MSDA=” P1”

TGIAN=24)
4.4.2 Phân tích (analysis)
Việc phân tích câu truy vấn giúp chúng ta loại bỏ các câu truy
vấn không đúng. Lý do có thể là do chúng bị sai kiểu hoặc sai
nghĩa.
Sai kiểu: nếu như nó có một thuộc tính , hoặc tên quan hệ chưa
được khai báo trong lược đồ toàn cục hoặc các phép toán được áp
dụng cho các thuộc tính có kiểu không thích hợp.
Thí dụ 2.4:
SELECT NV#
FROM NHANVIEN
WHERE TENNV>200
NV# không được khai báo trong lược đồ, phép so sánh
MSNV>200 là không đúng kiểu với TENNV.
Sai nghĩa: nếu các thành phần của nó không tham gia vào việc
tạo ra kết quả, trong ngữ cảnh của phép tính quan hệ chỉ có thể
kiểm tra được tính đúng đắn cho tập con của phép tính quan hệ.
Chúng thường không chứa các tuyển và phủ định. Để xác định lỗi
này thường sử dụng cách biểu diễn câu truy vấn dưới dạng đồ thị,
18
được gọi là đồ thi nối tương ứng (join graph) và đồ thị kết nối
(connection graph) hay còn gọi là đồ thị truy vấn (query graph).
Trong đồ thị truy vấn, một nút biểu thị cho một quan hệ kết quả,
các nút khác biểu thị cho các quan hệ toán hạng. Cạnh giữa các

nút là toán hạng biểu diễn cho một nối, cạnh nối với nút kết quả
sẽ biểu thị cho phép chọn.
Thí dụ 2.5:
SELECT TENNV, NVU
FROM NHANVIEN, PHANCONG, DUAN
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=DUAN.MSDA
AND TENDAN=”CAD/CAM”
AND TGIAN ≥ 36
AND NNGH= “Lập trình viên”
Hình 2. 3 Các đồ thị quan hệ
Trong đồ thị nối thì chỉ có các nối, đồ thị này có ích cho giai đoạn
tối ưu hóa vấn tin.
Nếu như đồ thị không liên thông thì câu truy vấn đó có lỗi.
SELECT TENNV, NVU
FROM NHANVIEN, PHANCONG, DUAN
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND TENDAN=”CAD/CAM”
AND TGIAN ≥ 36
AND NNGH= “Lập trình viên”
19
Hình 2. 4 Đồ thị truy vấn không liên thông
4.4.3. Loại bỏ dư thừa (simpli^cation)
Sau khi lượng từ hóa truy vấn, kết quả có thể chứa các vị từ dư
thừa. Các vị từ này có thể được loại bỏ bằng cách giản ước lượng
từ hóa bằng các qui tắc lũy đẳng sau:
1) p

p


p 6) p ∨ true

true
2) p ∨ p

p 7) p

¬p

false
3) p

true

p 8) p ∨ ¬p

true
4) p ∨ false

p 9) p
1

( p
1
∨ p
2
)

p
1

5) p

false

false 10) p
1


( p
1


p
2
)


p
1
Thí dụ 2.6:
SELECT NNGH
FROM NHANVIEN
WHERE (NOT(NNGH=”Lập trình viên”)
AND (NNGH=”Lập trình viên”
OR NNGH=”Kỹ sư điện”)
AND NOT(NNGH=”Kỹ sư điện”))
OR TENNV=”V. Dũng”
Với p
1
là <NNGH=”Lập trình viên”>; p

2
là <NNGH=”Kỹ sư điện”>
và p
3
là <TENNV=”V. Dũng”>
Sử dụng các quy tắc chuẩn hóa, ta có kết quả: ¬p
1


( p
1
∨ p
2
)


¬p
2
)∨ p
3
áp dụng các quy tắc ở phần trên ta có: ¬p
1

( p
1
∨ p
2
)

¬p

2
)∨ p
3


p3
Như vậy câu truy vấn trên được đơn giản hóa như sau:
SELECT NNGH
FROM NHANVIEN
20
WHERE TENNV=”V. Dũng”
4.4.4. Viết lại truy vấn (restructuring)
Bước này được chia thành hai bước nhỏ: (1) biến đổi câu truy vấn (query tree)
sang dạng đại số quan hệ, (2) cấu trúc lại câu truy vấn đại số nhằm cải thiện hiệu
năng. Câu truy vấn sẽ được biểu diễn dưới dạng cây toán tử. Mỗi nút lá biểu thị
cho một quan hệ của CSDL, các nút không phải lá biểu thị cho quan hệ trung gian
được sinh ra bởi các phép tính quan hệ. Chuỗi các phép toán theohướng từ lá đến
gốc biểu thị cho kết quả truy vấn.
Thí dụ 2.7:
“Tìm tên các nhân viên trừ V. Dũng đã làm cho dự án CAD/CAM trong một
hoặc hai năm”
SELECT TENNV
FROM NHANVIEN, PHANCONG, DUAN
WHERE NHANVIEN.MSNV=PHANCONG.MSNV
AND PHANCONG.MSDA=DUAN.MSDA
AND TENNV ≠ ”V.Dũng”
AND TENDA=”CAD/CAM”
AND (TGIAN=12 OR TGIAN=24)
Cây truy vấn có thể được biểu diễn như sau:
Hình 2. 5 Thí dụ về cây truy vấn

Bằng cách sử dụng các quy tắc biến đổi (transformation rule) dưới
đây ta có thể thu được nhiều cây tương đương từ cây trên.
Quy tắc biến đổi (transformation rule):
1) Giao hoán của phép toán hai ngôi”
 R× S

S × R
21
 R

S

S

R
 R

S

S

∪ R
2) Kết hợp của phép toán hai ngôi:
 (R
×
S)
×
T

R

×
(S
×
T)
 (R

S)

T

R

(S

T)
3) Đối với phép toán một ngôi nếu R[A] và A' ⊆ A, A" ⊆ A và A'⊆
A"ta có:
 ∏
A’
(∏
A”
(R )) ∏
A’
( R)

)())((
)()()()(
22112211
RR
ApApApAp ∧


σσσ
4) Giao hoán giữa phép chọn và phép chiếu

)))((())((
,, ,)(, ,)(, ,
111
RR
pnpnpn
AAAApAAApAA
∏∏⇔∏
σσ
 Lưu ý nếu Ap là phần tử của {A1,…,An} thì phép chiếu cuối
cùng ở vế phải không còn tác dụng, ta có thể loại bỏ nó. Tức
là:
)))((())((
,, ,)()(, ,
11
RR
pnppn
AAAApApAA
∏⇔∏
σσ
5) Giao hoán phép chọn với các phép toán hai ngôi. Phép chọn và
tích Descartes có thể được giao hoán bằng các quy tắc sau (cần
nhớ rằng thuộc tính Ai thuộc R):

SRSR
ApAp
×⇔× ))(()(

)()(
σσ
Chọn và nối cũng có thể giao hoán

SRSR
ApAp BkAj,)(BkAj,)(
))(()( 
σσ

Chọn và hợp cũng có thể giao hoán nếu R và S có lược đồ giống
nhau.

)()()(
)()()(
SRSR
ApApAp
σσσ
∪⇔∪
6) Giao hoán phép chiếu với các phép toán hai ngôi. Với R[A],
S[B];
C = A' ∪B' và A' ⊆ A,B' ⊆ B ta có:

)()()(
''
SRSR
BAC
Π×Π⇔×Π

)()()(
',',

SRSR
BBkAjABkAjC
ΠΠ⇔Π 

)()()( SRSR
CCC
Π×Π⇔∪Π
Trở lại với thí dụ 2.7, ta có thể thu được các cây truy vấn tương
dương như sau:
22
Hình 2. 6 Cây truy vấn tương đương
Ta nhận thấy rằng cây trong hình 2.5 tốt hơn cây trong hình 2.6
do không phải sử dụng tich Descartes.
Trong giai đoạn tối ưu hóa, người ta thử so sánh tất cả các cây
này dựa trên chi phí dự đoán. Tuy nhiên số lượng cây có thể là lớn
làm cho cách tiếp cận này phi thực tế. Người ta thường sử dụng
heuristic để tái cấu trúc cây. Có bốn quy tắc:
 Tách các phép toán một ngôi, làm đơn giản biểu thức truy
vấn
 Các phép toán một ngôi trên cùng một quan hệ có thể được
nhóm lại, để chỉ cần truy xuất đến quan hệ một lần
 Các phép toán một ngôi có thể giao hoán với phép toán hai
ngôi để cho phép một số phép toán được thực hiện trước (ví
dụ phép chọn)
 Các phép toán hai ngôi có thể được sắp xếp lại.
Sau khi tái cấu trúc cây ta thu được cây như trong hình 2.7
Một thuật toán tái cấu trúc đơn giản được trình bày trong [Ullman,
1982] có sử dụng heuristic trong đó có áp dụng các phép toán
một ngôi (như chọn/ chiếu) càng sớm càng tốt, nhằm làm giảm
kích thước của các quan hệ trung gian.

23
Hình 2. 7 Cây truy vấn đã được viết lại
CHƯƠNG 2 : TỐI ƯU HÓA TRUY VẤN PHÂN TÁN
Câu truy vấn thu được từ quá trình phân rã và cục bộ hóa dữ liệu
có thể cho thực hiện bằng cách đưa thêm vào các yếu tố truyền
tin (communication primitive) một cách có hệ thống. Việc hoán vị
thứ tự các phép toán trong câu truy vấn có thể đưa ra nhiều chiến
lược truy vấn. Việc tìm ra một cách sắp xếp tối ưu các phép toán
cho một câu truy vấn là nhiệm vụ của bộ tối ưu hóa (optimizer).
Chọn một chiến lược tối ưu là một bài toán NP-hard theo số lượng
quan hệ [Ibaraki and Kameda, 1984]. Vì thế nhiệm vụ của bộ tối
ưu hóa là tìm ra một chiến lược/phương án thực thi tốt, không cần
thiết phải tối ưu, và quan
trọng hơn là tránh được những chiến lược tồi.
24
Với đầu vào là câu truy vấn đã được phân rã, cục bộ hóa nhiệm
vụ của bộ tối ưu hóa tìm ra được một chiến lược thực thi câu truy
vấn (QEP) đã tối ưu, gồm các câu truy vấn đại số quan hệ được
đặc tả theo các mảnh, và các phép toán truyền dữ liệu, hỗ trợ cho
việc thực thi câu truy vấn qua các trạm.
Việc chọn lựa chiến lược tối ưu nói chung là việc tìm cách tiên
đoán được chi phí thực thi và giảm thiểu hàm chi phí.
Nguyên liệu chính của bộ tối ưu hóa dùng để tính chi phí là các số
liệu thống kê của các mảnh, các công thức đánh giá lực lượng của
các quan hệ trung gian được tạo ra. Ở phần này chúng ta tập
trung chủ yếu vào vấn đề sắp xếp thứ tự các phép toán nối vì lý
do nó là bài toán đã hiểu rõ, và các câu truy vấn có chứa phép
nối, chọn, chiếu được xem là loại truy vấn hay gặp. Chúng ta
cũng xem xét, thảo luận xem phép nối nửa có tác dụng như thế
nào trong việc xử lý các nối.

2.1. Tối ưu hóa truy vấn
Ở phần này ta sẽ thảo luận về quá trình tối ưu hóa nói chung, bất
kể là trong môi trường tập trung hay phân tán. Câu truy vấn cần
tối ưu giả thiết là được diễn tả bằng đại số quan hệ trên các quan
hệ CSDL (có thể là các mảnh). Tối ưu hóa truy vấn là quá trình
sinh ra một chiến lược thực thi truy vấn QEP.
Chiến lược được chọn phải hạ thấp tối đa hàm cho phí. Bộ tối ưu
được xem là cấu thành bởi ba thành phần: không gian tìm kiếm
(search space), mô hình chi phí (cost model), và chiến lược tìm
kiếm (search strategy).
Hình 2. 14 Quá trình tối ưu hóa truy vấn
2.1.1. Không gian tìm kiếm
Không gian tìm kiếm được xem là tập hợp của các chiến lược
phương án thực thi truy vấn khác nhau. Để nêu bật các đặc trưng
của bộ tối ưu hóa, chúng ta tập trung vào các cây nối (joint tree),
là cây toán tử với các phép toán nối hoặc tích Descartes. Lý do là
25

×