4. Một số nguyên lý chung của tối ưu hóa truy vấn
2.1.2. Chiến lược tìm kiếm
Chiến lược tìm kiếm hay được sử dụng là quy hoạch động (dynamic programming), với tính chất đơn định (deterministic). Các chiến lược này xây dựng các phương án thực thi bắt đầu từ các quan hệ cơ sở, nối thêm nhiều quan hệ tại mỗi bước cho đến khi thu dược các phương án khả thi. Chiến lược quy hoạch động xây dựng phương án khả thi theo chiều rộng (breadth first). Còn chiến lược tham ăn thì lại xây dựng cây theo chiều sâu (depth first). Các chiến lượng vét cạn này đảm bảo tìm ra được các phương án khả thi với một chi phí chấp nhận được khi số quan hệ trong câu truy vấn không lớn.
Tuy nhiên cách tiếp cận này có chi phí quá cao khi số quan hệ trong câu truy vấn lớn hơn 5 hoặc 6. Do vậy các nghiên cứu gần đây đang tập trung vào các chiến lược ngẫu nhiên hóa (randomized strategy), các heuristic để làm giảm độ phức tạp của tối ưu hóa với mục tiêu tìm ra phương án khả thi “tốt”.
Hình 2. 17 Hành động của bộ tối ưu hóa khi áp dụng chiến lược đơn định
Trong [Lanzelotte et al.,1993] đã chứng tỏ bằng thực nghiệm rằng các chiến lược ngẫu nhiên hóa có hiệu năng tốt hơn các chiến lược đơn định khi truy vấn có chứa khá nhiều quan hệ. Không giống như các chiến lược đơn định, các chiến lược ngẫu nhiên hóa cho
phép bộ tối ưu hóa đánh đổi thời gian tối ưu hóa với thời gian thực thi. Chẳng hạn chiến lược ngẫu nhiên hóa, như trong Iterative Improvement [Swami,1989] và Simulated Annealing [Ioannidis and Wong, 1987], tập trung vào việc tìm kiếm lời giải tối ưu xung quanh một số điểm đặc biệt nào đó. Chúng không đảm bảo rằng sẽ tìm ra được lời giải tốt
nhất nhưng lại tránh được chi phí quá cao của tối ưu hóa (dựa trên việc tiêu dùng bộ nhớ và thời gian). Trước tiên một hoặc nhiều phương án khởi đầuđược xây dựng bởi một chiến lược
thiển cận. Sau đó thuật toán tìm cách cải thiện các phương án này bằng cách thăm các lân cận (neighbor) của nó. Một lân cận thu được bằng việc biến đổi ngẫu nhiên một phương án.
Hình 2. 18 Hành động của bộ tối ưu hóa khi áp dụng chiến lược ngẫu nhiên