Batas Memori Melebihi
Pengoptimal terpaksa berhenti mencari alternatif rencana yang lebih baik karena tekanan memori. Alasan untuk itu harus diselidiki dan diperbaiki, kemudian kompilasi permintaan mencoba lagi. Paket yang dikembalikan mungkin bukan yang dipilih pengoptimal jika kondisi memori rendah tidak ada.
Waktu habis
Alasan ini banyak disalahpahami .
Pengoptimal kueri bertujuan untuk menemukan paket yang masuk akal dengan cepat . Itu tidak melakukan pencarian lengkap untuk menemukan rencana terbaik. Secara desain, itu menghindari menghabiskan lebih banyak waktu pada optimasi daripada yang diperlukan. Salah satu fitur ini yang berfungsi untuk memastikan ini adalah 'batas waktu' (bukan ukuran waktu).
Pengoptimal menetapkan sendiri 'anggaran eksplorasi' berdasarkan kompleksitas kueri logis, perkiraan kardinalitas, dan perkiraan biaya rencana termurah yang ditemukan sejauh ini (jika ada). Pertanyaan yang lebih kompleks dengan kardinalitas yang lebih tinggi diberikan anggaran yang lebih tinggi.
Jika anggaran ini terlampaui selama salah satu fase pencariannya, fase berakhir. Ini adalah bagian dari desain dan operasi normal pengoptimal. Permintaan yang membutuhkan lebih banyak upaya pengoptimal mendapatkannya; yang tidak, jangan.
Pikirkan 'Time Out' sebagai 'Rencana Cukup Baik Ditemukan'.
Rencana Cukup Baik Ditemukan
Ini berarti persis sama dengan alasan kosong. Ini hanyalah kekhasan sejarah bahwa rencana dengan biaya di bawah 0,909090 ... (1 / 1.1) dilabeli dengan cara ini. Tidak ada yang berhenti lebih awal atau sebaliknya ditangani secara khusus atau berbeda dalam kode pengoptimal ketika alasan ini muncul.
Selain dari Batas Memori Melebihi, tidak ada 'alasan penghentian awal' yang sangat berarti (jika ada sama sekali) untuk pencarian gelombang atau analisis kinerja. Saya biasanya mengabaikan mereka.
Nasihat
Upaya penyetelan kueri target berdasarkan pada metrik kinerja nyata (waktu yang berlalu, penggunaan CPU / memori, ... apa pun yang penting dalam konteks). Jika kueri terlalu lambat untuk tujuan yang dimaksudkan, luangkan waktu untuk membuatnya lebih cepat. Ukur kinerja aktual, bandingkan dengan baseline dan sejarah, dan target upaya tuning pada varian penting.
Simpan data yang dijamin-bersih dalam skema relasional yang tepat, dengan statistik dan indeks yang bermanfaat, dan pertanyaan yang ditulis dengan baik, ramah-pengoptimal.