ขณะนี้ฉันกำลังมองหาวิธีเพิ่มประสิทธิภาพกระบวนการที่
ใช้เวลานานในการทำงาน
- มีไฟล์ข้อความประมาณ 270 ไฟล์ที่ต้องกรอง
- แต่ละไฟล์มีประมาณ 70,000 ~ 150,000 บรรทัด
- ตารางอ้างอิงมักจะมีบันทึกประมาณ 16 ล้าน ภายใต้ Oracle 10g
- กระบวนการนี้ดำเนินการทุกชั่วโมง
- มีความเป็นไปได้ที่ 9 อินสแตนซ์ของกระบวนการนั้นอาจจะทำงานเกือบ
พร้อมกัน
สิ่งที่ฉันทำในขณะนี้คือสปูลตารางอ้างอิงลงในไฟล์ คัดลอกสิ่งนั้นลงใน
แฮช ทำแบบเดียวกันกับไฟล์ข้อความ จากนั้นจับคู่แฮชคีย์
บันทึกใดๆ ในไฟล์ข้อความที่พบใน รายการอ้างอิงจะถูกยกเลิก
สิ่งนี้จะเกิดขึ้นซ้ำสำหรับไฟล์ทั้งหมด 270 ไฟล์ อย่างไรก็ตาม ส่วนสพูลจะทำ
เพียงครั้งเดียวในตอนเริ่มต้น
อย่างไรก็ตาม วิธีการนี้ใช้ RAM ประมาณ 300mb~500mb และด้วย
ความเป็นไปได้ที่จะมีอินสแตนซ์หลายอินสแตนซ์ของกระบวนการนั้นทำงานเกือบ
ในเวลาเดียวกัน ถือเป็นฝันร้ายสำหรับเซิร์ฟเวอร์ของเรา
มีความคิดใดที่จะดำเนินการให้ดีขึ้นกว่านี้?