Câu hỏi / câu trả lời SO được liên kết bởi lượng tử trong các nhận xét là chính xác, "Tập làm việc" về cơ bản là lượng dữ liệu VÀ các chỉ mục sẽ được hệ thống của bạn kích hoạt / sử dụng.
Bạn không thể biết db.stats()
đó là gì trừ khi bạn nghĩ rằng bạn sẽ cần phải có toàn bộ tập hợp dữ liệu và toàn bộ chỉ mục trong RAM. Nghĩa là, bạn có thể tìm ra bộ làm việc tối đa cho cơ sở dữ liệu đó, nhưng không phải là bộ làm việc hoạt động thực tế. Tối đa là tổng của:
- dataSize - Tổng kích thước của dữ liệu được giữ trong cơ sở dữ liệu này
- indexSize - Tổng kích thước của tất cả các chỉ mục được tạo trên cơ sở dữ liệu này
Trong trường hợp của bạn, mức tối đa đó sẽ vào khoảng 30,45 MiB với đầu ra bạn đã dán.
Để theo dõi việc sử dụng bộ nhớ thực tế, tôi sẽ đề xuất kết hợp các số liệu từ db.stats()
và biểu đồ bộ nhớ (đặc biệt là bộ nhớ lưu trú) có sẵn trong công cụ giám sát miễn phí - MMS .
Cập nhật (04/08/2013):
Phiên bản 2.4 đã thêm Công cụ ước tính kích thước bộ làm việc vào lệnh serverStatus - đây chỉ là ước tính, nhưng nó có thể được sử dụng làm hướng dẫn và kiểm tra xem các số liệu và ước tính khác ở trên có hợp lý với cá thể MongoDB của bạn không.
Cập nhật (tháng 9 năm 2016):
Ba năm kể từ câu trả lời ban đầu của tôi và mọi thứ phức tạp hơn nhiều - nói chung là việc thu được kích thước dữ liệu của bạn và các chỉ mục của bạn vẫn là điểm khởi đầu tốt. Nhưng, việc tìm ra mọi thứ trong MongoDB bây giờ sẽ phụ thuộc vào công cụ lưu trữ mà bạn đang sử dụng. Ngoài ra, Phiên bản 3.0 đã loại bỏ công cụ ước tính Bộ làm việc được liên kết ở trên cho MMAP như một phần của công việc khóa cấp độ bộ sưu tập (xem SERVER-13783 ). Hiện tại (ví dụ) thống kê bộ đệm cho WiredTiger
công cụ thay thế giả định rằng bạn đã thực hiện bước nhảy sang công cụ mới. Đối với MMAP
, khuyến nghị chung là xem số liệu lỗi trang như một proxy để xem liệu dữ liệu của bạn có phù hợp với bộ nhớ hay không.