Desain produk menggunakan tabel terpisah dengan tanda tangan serupa untuk menyimpan jenis data berbeda.
Sehingga Anda dapat melakukan penghitungan pada setiap tabel secara terpisah secara paralel tanpa kunci.
Saya mengoptimalkan kode penghitungan sehingga menjalankannya 7 kali lebih cepat, tetapi peningkatan kinerja 10% berikutnya menurut saya memerlukan x10 lebih banyak waktu untuk pengkodean/pengujian.
Penghitungan harus dilakukan pada semua tabel sehingga logis untuk melakukan penghitungan secara paralel (terutama bila server memiliki 32 core). Untuk tujuan tersebut saya menemukan paket DBMS_SCHEDULER yang berguna:
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;
/
Namun saya tidak tahu bagaimana menunggu pekerjaan selesai sebelum pesan pekerjaan selesai...
Melakukan polling scheduler_jobs secara terus-menerus adalah solusi yang tidak efisien, namun ini hanya satu-satunya solusi yang ada dalam pikiran Anda. Pencarian dan dokumen resmi tidak memberikan solusi yang relevan.