การออกแบบผลิตภัณฑ์ใช้ตารางแยกกันที่มีลายเซ็นคล้ายกันเพื่อเก็บข้อมูลประเภทต่างๆ
เพื่อให้คุณสามารถคำนวณแต่ละตารางแยกกันแบบขนานโดยไม่ต้องล็อค
ฉันปรับโค้ดการคำนวณให้เหมาะสมเพื่อให้ทำงานเร็วขึ้น 7 เท่า แต่การเพิ่มประสิทธิภาพอีก 10% ถัดไป ฉันคิดว่าต้องใช้เวลาเพิ่มขึ้น x10 ในการเขียนโค้ด/ทดสอบ
การคำนวณจะต้องดำเนินการบนตารางทั้งหมด ดังนั้นจึงสมเหตุสมผลในการคำนวณแบบขนาน (โดยเฉพาะเมื่อเซิร์ฟเวอร์มี 32 คอร์) เพื่อจุดประสงค์ดังกล่าว ฉันพบว่าแพ็คเกจ DBMS_SCHEDULER มีประโยชน์:
declare
job1 clob := dbms_scheduler.generate_job_name('REPAYMENT_');
job2 clob := dbms_scheduler.generate_job_name('REPAYMENT_');
begin
dbms_scheduler.create_job(job_name => job1,
job_type => 'PLSQL_BLOCK',
job_action => 'begin calc_rep(30, DATE ''2012-01-01'', DATE ''2012-12-31''); end;',
enabled => true,
auto_drop => true);
dbms_scheduler.create_job(job_name => job2,
job_type => 'PLSQL_BLOCK',
job_action => 'begin calc_rep(31, DATE ''2012-01-01'', DATE ''2012-12-31''); end;',
enabled => true,
auto_drop => true);
dbms_output.put_line('jobs was finished');
end;
/
แต่ฉันไม่รู้ว่าจะรอให้งานเสร็จอย่างไรก่อนที่ข้อความ งานจะเสร็จสิ้น...
การโพล scheduler_jobs แบบวนซ้ำอย่างต่อเนื่องเป็นวิธีแก้ปัญหาที่ไม่มีประสิทธิภาพ แต่เป็นเพียงวิธีเดียวเท่านั้นที่อยู่ในใจ การค้นหาและเอกสารอย่างเป็นทางการไม่มีวิธีแก้ปัญหาที่เกี่ยวข้อง