ใน Oracle Exadata (11gR2) เรามีฐานข้อมูลที่ค่อนข้างอ้วน
- cpu_count คือ 24
- parallel_server_instances คือ 2
- parallel_threads_per_cpu คือ 2
เราสังเกตเห็นว่าจากการสังเกตใน Oracle Enterprise Manager (OEM) ประสิทธิภาพนั้นแย่มากเนื่องจากมีการดำเนินการแบบสอบถามอย่างจริงจัง เพื่อแก้ไขปัญหานี้ตารางทั้งหมดมุมมองที่เป็นรูปธรรมและดัชนีถูกเปลี่ยนเพื่อใช้ประโยชน์จากความเท่าเทียม เช่น:
ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT);
ระบบมีการเปลี่ยนแปลงเพื่อเปิด parallelisation:
ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO';
สิ่งนี้ส่งผลให้มีประสิทธิภาพที่ดีขึ้น แต่บางครั้งเราสังเกตเห็นใน OEM ว่าแบบสอบถามเดียวจะผูก DOP จาก 96 (ทรัพยากรที่มีอยู่ทั้งหมด) สิ่งนี้ทำให้เคียวรีลำดับต่อมาถูกลดระดับเป็น DOP เป็น 1 (ไม่มีการขนาน) ส่งผลให้ประสิทธิภาพต่ำจนกว่าแบบสอบถาม hogging จะเสร็จสมบูรณ์
ในการแก้ไขปัญหานี้เราได้พยายาม จำกัด DOP ที่สามารถใช้ได้กับแบบสอบถามใด ๆ ด้วย:
ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24;
สิ่งนี้ไม่มีผลกระทบ เรามักสังเกตการสืบค้นที่จะใช้เกินขีด จำกัด (โดยทั่วไปคือ 48 หรือ 96 แต่ไม่มีรูปแบบจริง)
เราจะป้องกันไม่ให้แบบสอบถามใด ๆ จากแหล่งข้อมูลที่มีอยู่ทั้งหมดได้อย่างไร