Vượt quá giới hạn bộ nhớ
Trình tối ưu hóa đã buộc phải ngừng tìm kiếm các giải pháp thay thế kế hoạch tốt hơn do áp lực bộ nhớ. Lý do cho điều đó nên được điều tra và sửa chữa, sau đó biên dịch truy vấn đã thử lại. Kế hoạch được trả về rất có thể không phải là kế hoạch mà trình tối ưu hóa đã chọn nếu không tồn tại điều kiện bộ nhớ thấp.
Hết giờ
Lý do này là nhiều hiểu lầm .
Trình tối ưu hóa truy vấn nhằm tìm ra một kế hoạch hợp lý một cách nhanh chóng . Nó không thực hiện tìm kiếm toàn diện để tìm ra kế hoạch tốt nhất có thể. Theo thiết kế, nó tránh dành nhiều thời gian cho việc tối ưu hóa hơn mức cần thiết. Một trong những tính năng hoạt động để đảm bảo điều này là 'hết thời gian' (không phải là thước đo thời gian).
Trình tối ưu hóa tự đặt ra một 'ngân sách thăm dò' dựa trên mức độ phức tạp của truy vấn logic, ước tính số lượng thẻ và chi phí ước tính của gói rẻ nhất được tìm thấy cho đến nay (nếu có). Các truy vấn phức tạp hơn với số lượng thẻ cao hơn được cấp ngân sách cao hơn.
Nếu ngân sách này bị vượt quá trong một trong các giai đoạn tìm kiếm của nó, giai đoạn kết thúc. Đây là một phần của thiết kế và hoạt động bình thường của trình tối ưu hóa. Các câu hỏi cần nhiều nỗ lực tối ưu hóa có được nó; những người không, không.
Hãy nghĩ về 'Hết giờ' là 'Kế hoạch đủ tốt được tìm thấy'.
Kế hoạch đủ tốt được tìm thấy
Điều này có nghĩa chính xác giống như một lý do trống. Nó chỉ đơn giản là một trò chơi lịch sử mà các kế hoạch có chi phí dưới 0,909090 ... (1 / 1.1) được dán nhãn theo cách này. Không có gì dừng lại sớm hoặc được xử lý đặc biệt hoặc khác trong mã tối ưu hóa khi lý do này xuất hiện.
Ngoài giới hạn bộ nhớ đã vượt quá, không có "lý do chấm dứt sớm" nào có ý nghĩa nhiều (nếu có gì cả) để điều chỉnh truy vấn hoặc phân tích hiệu suất. Tôi thường bỏ qua chúng.
Lời khuyên
Các nỗ lực điều chỉnh truy vấn mục tiêu dựa trên các số liệu hiệu suất thực (thời gian trôi qua, sử dụng CPU / bộ nhớ, ... bất cứ điều gì quan trọng trong ngữ cảnh). Nếu một truy vấn quá chậm so với mục đích của nó, hãy dành thời gian để làm cho nó nhanh hơn. Đo lường hiệu suất thực tế, so sánh nó với đường cơ sở và lịch sử và nỗ lực điều chỉnh mục tiêu ở các phương sai quan trọng.
Lưu trữ dữ liệu được bảo đảm trong một lược đồ quan hệ phù hợp, với các số liệu thống kê và chỉ mục hữu ích và các truy vấn thân thiện với trình tối ưu hóa được viết tốt.