ตามเอกสารพังพอนสำหรับMongooseJS
และMongoDB
/ Node.js
:
เมื่อแอปพลิเคชันของคุณเริ่มต้นขึ้น Mongoose จะเรียก
ensureIndex
ใช้ดัชนีที่กำหนดไว้ในสคีมาของคุณโดยอัตโนมัติ แม้ว่าจะเหมาะสำหรับการพัฒนา แต่ขอแนะนำให้ปิดใช้งานพฤติกรรมนี้ในการผลิตเนื่องจากการสร้างดัชนีอาจทำให้เกิดผลกระทบต่อประสิทธิภาพอย่างมาก ปิดการทำงานโดยตั้งค่าautoIndex
ตัวเลือกของสคีมาของคุณเป็นเท็จ
สิ่งนี้ดูเหมือนจะแนะนำให้ลบการจัดทำดัชนีอัตโนมัติจากพังพอนก่อนที่จะปรับใช้เพื่อเพิ่มประสิทธิภาพ Mongoose จากการสั่งให้ Mongo ไปและปั่นผ่านดัชนีทั้งหมดในการเริ่มต้นแอปพลิเคชันซึ่งดูเหมือนจะสมเหตุสมผล
วิธีที่เหมาะสมในการจัดการการจัดทำดัชนีในรหัสการผลิตคืออะไร? บางทีสคริปต์ภายนอกควรสร้างดัชนี? หรืออาจensureIndex
ไม่จำเป็นหากแอปพลิเคชั่นเดียวเป็นผู้อ่าน / เขียนเพียงคนเดียวในคอลเลคชันเนื่องจากจะดำเนินการต่อดัชนีทุกครั้งที่มีการเขียน DB
แก้ไข:เพื่อเสริม MongoDB มีเอกสารที่ดีสำหรับวิธีการจัดทำดัชนี แต่ไม่ควรทำทำไมหรือเมื่อใดจึงควรทำคำสั่งการจัดทำดัชนีอย่างชัดเจน สำหรับฉันแล้วดูเหมือนว่าดัชนีควรได้รับการอัปเดตโดยแอปพลิเคชันนักเขียนโดยอัตโนมัติในคอลเลกชันที่มีดัชนีที่มีอยู่และนั่นensureIndex
เป็นสิ่งที่ทำได้เพียงครั้งเดียว (ทำเมื่อมีการใช้ดัชนีใหม่) ซึ่งในกรณีนี้ Mongoose autoIndex
ควรเป็น no-op ภายใต้การรีสตาร์ทเซิร์ฟเวอร์ปกติ