Pada Oracle Exadata (11gR2), kami memiliki basis data yang relatif gemuk.
- cpu_count adalah 24
- parallel_server_inances adalah 2
- parallel_threads_per_cpu adalah 2
Kami mencatat, melalui pengamatan di Oracle Enterprise Manager (OEM), bahwa kinerja sangat buruk karena permintaan dieksekusi secara serial. Untuk mengatasi ini, semua tabel, pandangan terwujud dan indeks diubah untuk mengambil keuntungan dari paralelisme. misalnya:
ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT);
Sistem diubah untuk mengaktifkan parallelisation:
ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO';
Ini menghasilkan kinerja yang lebih baik tetapi kadang-kadang kami mengamati di OEM bahwa satu permintaan akan mengikat DOP 96 (semua sumber daya yang tersedia). Ini mengakibatkan pertanyaan selanjutnya diturunkan ke DOP 1 (tidak ada parallelisation). Menghasilkan kinerja yang buruk sampai kueri memonopoli selesai.
Untuk mengatasi ini, kami mencoba membatasi DOP yang tersedia untuk permintaan apa pun dengan:
ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24;
Ini tidak berpengaruh. Kami sering mengamati kueri yang akan menggunakan lebih dari batas (umumnya 48 atau 96, tetapi tidak ada pola nyata).
Bagaimana kami mencegah permintaan tunggal dari memonopoli semua sumber daya yang tersedia?
sumber