Theo tài liệu Mongoose cho MongooseJS
và MongoDB
/ Node.js
:
Khi ứng dụng của bạn khởi động, Mongoose sẽ tự động gọi
ensureIndex
từng chỉ mục đã xác định trong lược đồ của bạn. Mặc dù tốt cho quá trình phát triển, nhưng hành vi này nên được vô hiệu hóa trong quá trình sản xuất vì việc tạo chỉ mục có thể gây ra tác động đáng kể đến hiệu suất. Vô hiệu hóa hành vi bằng cách đặtautoIndex
tùy chọn của giản đồ của bạn thành sai.
Điều này dường như hướng dẫn loại bỏ tự động lập chỉ mục khỏi mongoose trước khi triển khai để tối ưu hóa Mongoose khỏi hướng dẫn Mongo đi và lướt qua tất cả các chỉ mục khi khởi động ứng dụng, điều này có vẻ hợp lý.
Cách thích hợp để xử lý lập chỉ mục trong mã sản xuất là gì? Có lẽ một tập lệnh bên ngoài sẽ tạo chỉ mục? Hoặc có thể ensureIndex
là không cần thiết nếu một ứng dụng duy nhất là người đọc / người viết duy nhất cho một bộ sưu tập bởi vì nó sẽ tiếp tục một chỉ mục mỗi khi ghi DB xảy ra?
Chỉnh sửa: Để bổ sung, MongoDB cung cấp tài liệu tốt về cách thực hiện lập chỉ mục, nhưng không phải lý do tại sao hoặc khi nào các chỉ thị lập chỉ mục rõ ràng nên được thực hiện. Đối với tôi, có vẻ như các chỉ mục nên được ứng dụng người viết cập nhật tự động trên các bộ sưu tập có chỉ mục hiện có và đó ensureIndex
thực sự là việc chỉ làm một lần (được thực hiện khi một chỉ mục mới đang được áp dụng), trong trường hợp đó Mongoose's autoIndex
phải là một no-op khi khởi động lại máy chủ bình thường.