Saat ini saya sedang mencari cara untuk mengoptimalkan proses yang
memerlukan waktu lama untuk dijalankan.
- Ada sekitar 270 file teks yang akan disaring.
- Setiap file memiliki sekitar 70k~150k baris.
- Tabel referensi biasanya memiliki sekitar 16m catatan di bawah Oracle 10g.
- Prosesnya dijalankan setiap jam.
- Ada kemungkinan bahwa 9 contoh proses tersebut dapat dijalankan hampir
secara bersamaan.
Apa yang saat ini saya lakukan adalah memasukkan tabel referensi ke dalam sebuah file, menyalinnya ke dalam
hash, melakukan hal yang sama dengan file teks, lalu melakukan pencocokan kunci hash.
Catatan apa pun pada file teks yang ditemukan di daftar referensi akan dibuang.
Hal ini diulangi untuk seluruh 270 file, namun bagian spooling hanya dilakukan
sekali di awal.
Namun pendekatan ini menghabiskan sekitar 300mb~500mb RAM, dan dengan
kemungkinan menjalankan beberapa proses tersebut hampir pada
waktu yang sama, ini merupakan mimpi buruk bagi server kami.
Adakah ide bagaimana melakukan ini dengan lebih baik?