2013-08-29 12 views
7

Tôi đang cố gắng thu thập tất cả các truy vấn của mình xảy ra đối với mongodb đối với Applciation của tôi. Vì vậy, tôi đã thiết lập trình độ hồ sơ thành 2 để nó sẽ ghi lại tất cả các truy vấn. Là một phần của kiến ​​trúc, ngay sau khi người dùng đăng nhập, sẽ có các cập nhật liên tục xảy ra đối với mongodb.Tại sao các truy vấn bên trong bộ sưu tập system.profile đang bị ghi đè

Nhưng tôi quan sát thấy là số lượng system.profile đang được giảm không biết tại sao

> db.system.profile.count() 
322 
> db.system.profile.count() 
351 
> db.system.profile.count() 
202 
> db.system.profile.count() 
136 
> db.system.profile.count() 
233 

Tại sao trong trường hợp của tôi các truy vấn được ghi đè ??

Có khả năng nào tôi có thể ghi lại tất cả các truy vấn phân biệt xảy ra cho Ứng dụng của mình không.

Tôi cần điều này vì tôi có thể xóa/thêm một số chỉ mục trên một trong các bộ sưu tập của mình.

Trả lời

20

system.profile là bộ sưu tập có giới hạn với kích thước mặc định là 1MB nên tài liệu được xóa trên cơ sở tự nhiên (đối với dấu thời gian chèn) để tạo chỗ cho tài liệu mới hơn.

Để tăng kích thước của bộ sưu tập system.profile (nói 10 MB) làm:

1) Dừng profiler: db.setProfilingLevel(0)

2) Thả system.profile: db.system.profile.drop()

3) Tạo bộ sưu tập system.profile lớn hơn nhiều theo cách thủ công: db.createCollection("system.profile", { capped: true, size: 1024 * 1024 * 10 })

4) Bật lại hồ sơ

Nếu, trung bình, một bộ sưu tập 1MB được trang bị khoảng 200-300 tài liệu, cài đặt mới sẽ phù hợp với khoảng 2.000 - 3.000 tài liệu. Tăng kích thước system.profile nếu cần.

+0

trả lời tuyệt vời, cảm ơn bạn rất rất nhiều. chắc chắn sẽ hữu ích cho những người sử dụng mongodb. – Pawan