ฉันมีเอกสาร 10,000,000 รายการที่ฉันต้องการแทรกลงใน MongoDB
ฉันใช้พังพอนเพื่อสร้างเอกสารของ JSON ที่แยกวิเคราะห์ (JSON ถูกสร้างขึ้นโดยการแปลงเนื้อหาของไฟล์ txt จำนวนมาก)
ฉันเริ่มใช้ Model.create
สำหรับแต่ละเอกสาร แต่มันช้ามากและต้องใช้เวลาหลายวันในการดำเนินการให้เสร็จสิ้น ฉันจึงเปลี่ยนไปใช้ Model.collection.insert
เพื่อเร่งความเร็ว
นี่คือฟังก์ชัน saveToDB
ของฉัน (เขียนด้วย TypeScript):
private saveToDB(hand: Hand): void {
this.bulkHands.push(new HandHistory(hand));
if(this.bulkHands.length >= 10000) {
HandHistory.collection.insert(this.bulkHands, (err): void => {
if(err) {
console.log('error', err);
}
this.bulkHands = [];
});
}
}
ฉันลองใช้โค้ดแล้ว Parser ของฉันสร้างอาร์เรย์เป็น 10,000 เอกสาร จากนั้นพยายามแทรกลงในฐานข้อมูล แต่โหนดจะขัดข้องด้วย Segmentation fault: 11
เสมอ
แม้ว่าฉันจะตั้งค่าขีดจำกัดไว้ที่ 1 (การแทรกเอกสารทีละฉบับ) สิ่งนี้ก็ยังเกิดขึ้น ฉันเดาว่ามันเกี่ยวข้องกับฟังก์ชัน Model.collection.insert
แต่ความรู้ของฉันเกี่ยวกับโครงสร้างพื้นฐานยังไม่ลึกพอที่จะเข้าใจสิ่งที่เกิดขึ้นที่นี่
มีใครพบปัญหาดังกล่าวหรือไม่? และฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้?