2012-09-03 45 views
6

Tôi có một MongoDB bị phân mảnh và nhân bản với hàng chục triệu bản ghi. Tôi biết rằng Mongo viết dữ liệu với một số yếu tố đệm, để cho phép cập nhật nhanh, và tôi cũng biết rằng để nhân rộng cơ sở dữ liệu Mongo nên lưu trữ nhật ký hoạt động đòi hỏi một số (thực sự, rất nhiều) không gian. Ngay cả với kiến ​​thức đó, tôi không biết làm thế nào để ước tính kích thước thực tế theo yêu cầu của Mongo cho một kích thước của một bản ghi cơ sở dữ liệu điển hình. Bởi bây giờ tôi có một descrepancy với một yếu tố 2 - 3 giữa sửa chữa hàng tuần.Tổng dung lượng lưu trữ MongoDB

Vì vậy, câu hỏi đặt ra là: Làm thế nào để ước tính tổng kích thước lưu trữ theo yêu cầu của MongoDB cho kích thước bản ghi trung bình tính bằng byte?

Trả lời

4

Câu trả lời ngắn gọn là: bạn không thể, không chỉ dựa trên trung bình. kích thước tài liệu (ít nhất là không theo bất kỳ cách chính xác nào).

Để giải thích chi tiết hơn:

Không gian cần thiết trên đĩa không chỉ đơn giản là chức năng của kích thước tài liệu trung bình. Ngoài ra còn có không gian cần thiết cho bất kỳ chỉ mục nào bạn tạo. Sau đó, có không gian cần thiết nếu bạn kích hoạt những chuyển động đó (mặc dù đệm, điều này xảy ra) - không gian đó được đặt vào danh sách sẽ được sử dụng lại nhưng tùy thuộc vào dữ liệu bạn chèn sau đó, có thể hoặc không thể tái sử dụng không gian đó.

Bạn cũng có thể thêm vào thực tế rằng phân bổ trước sẽ có nghĩa là đôi khi một số tài liệu sẽ tăng mức sử dụng dung lượng trên đĩa của bạn lên ~ 2GB khi tệp dữ liệu mới được phân bổ. Tất nhiên, với đầy đủ dữ liệu, điều này về bản chất sẽ là một lỗi làm tròn nhưng nó rất đáng ghi nhớ.

Cách duy nhất để ước tính loại dữ liệu này thành tỷ lệ cỡ, giả sử mẫu sử dụng nhất quán, là xu hướng theo thời gian cho trường hợp sử dụng cụ thể của bạn và theo dõi việc sử dụng dung lượng đĩa so với dữ liệu được chèn (số lượng tài liệu có thể tốt hơn khối lượng dữ liệu tùy thuộc vào sự thay đổi kích thước của tài liệu).

Tương tự, nếu bạn theo dõi tốc độ chèn, kích thước tài liệu và khoảng trống thu được từ một lần đồng bộ hóa/sửa chữa. FYI - bạn có thể resync một thứ cấp từ đầu để có được một bản sao "tươi" của các tập tin dữ liệu thay vì chạy một sửa chữa, có thể ít gây rối, và sử dụng ít không gian hơn tùy thuộc vào thiết lập của bạn.

Các vấn đề liên quan