Tôi biết rằng
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
7 chấp nhận và truy xuất các bản ghi dưới dạng các đối tượng JSON/BSON, nhưng làm thế nào để nó thực sự lưu trữ các tệp này trên đĩa? . Unknown ai can accept?
Nội dung chính Hiển thị
- Làm thế nào để MongoDB lưu trữ dữ liệu trên đĩa?
- MongoDB có lưu vào đĩa không?
- Làm thế nào các tập tin được lưu trữ trong MongoDB?
- MongoDB save data của nó ở đâu?
Hỏi ngày 8 tháng 11 năm 2010 lúc 19. 44 8 tháng 11, 2010 lúc 19. 44
Đánh dấu Lemoinemark Lemoine Đánh dấu LeMoine
4. 3383 Huy hiệu vàng34 Huy hiệu bạc51 Huy hiệu Đồng3 huy hiệu vàng34 huy hiệu bạc51 huy hiệu đồng
MongoDB lưu trữ dữ liệu trên đĩa dưới dạng BSON trong thư mục đường dẫn dữ liệu của bạn, thường là /dữ liệu /db. Cần có hai tệp trên mỗi bộ sưu tập ở đó, Bộ sưu tập. 0, save archive data (và số nguyên sau đó được tăng lên dưới dạng nhu cầu) và thu thập. ns lưu trữ siêu dữ liệu đặt tên cho bộ sưu tập
Đã trả ngày 8 tháng 11 năm 2010 lúc 20. 00 8 tháng 11, 2010 lúc 20. 00
Jamie Rumbelowjamie Rumbelow Jamie Rumbelow
4. 8672 Huy hiệu vàng28 Huy hiệu bạc42 Huy hiệu đồng2 huy hiệu vàng28 huy hiệu bạc42 huy hiệu đồng
1
Tài liệu chi tiết về định dạng BSON có thể được tìm thấy ở đây. http. //bsonspec. tổ chức/
Đã trả lời ngày 11 tháng 11 năm 2010 lúc 13. 44 11/11/2010 lúc 13. 44
Mgriesbachmgriesbach MGriesbach
3442 Huy hiệu bạc6 Huy hiệu đồng2 huy hiệu bạc6 huy hiệu đồng
Đã trả lời ngày 11 tháng 2 năm 2015 lúc 17. 33 11/02/2015 lúc 17. 33
1
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → Hướng dẫn sử dụng MongoDB
Trên trang này
- Nguyên tắc cơ bản của cơ lưu trữ
- Bạn có thể hợp nhất các công cụ lưu trữ trong một bộ sao chép không?
- Động cơ lưu trữ Wiredtiger
- dự đoán lưu trữ dữ liệu
Tài liệu này giải quyết các câu hỏi biến phổ biến liên quan đến hệ thống lưu trữ của MongoDB
Công cụ lưu trữ là một phần của cơ sở dữ liệu chịu trách nhiệm quản lý cách lưu trữ dữ liệu, cả trong bộ nhớ và trên đĩa. Nhiều cơ sở dữ liệu hỗ trợ nhiều công cụ lưu trữ, trong đó các công cụ khác nhau hoạt động tốt hơn cho khối lượng công việc cụ thể. Ví dụ, một công cụ lưu trữ có thể cung cấp hiệu suất tốt hơn cho khối lượng công việc đọc nặng và một công cụ khác có thể hỗ trợ thông tin lượng cao hơn cho các hoạt động ghi chép
mẹo
Xem thêm
Đúng. Bạn có thể có các thành viên Set Replica bằng cách sử dụng các công cụ lưu trữ khác nhau (WiredTiger và In-Memory)
Ghi chú
Start from version 4. 2, MongoDB sẽ loại bỏ công cụ lưu trữ MMAPV1 không sử dụng
Đúng. Nhìn thấy
-
Change to setting to Wiredtiger
-
Change the copy copy to Wiredtiger
-
Thay cụm từ Sharded thành Wiredtiger
Invalid data rate so with non-compression data phụ thuộc vào dữ liệu của bạn và thư viện nén được sử dụng. Theo mặc định, dữ liệu được thu thập trong WiredTiger sử dụng khối nén Snappy; . Chỉ số dữ liệu sử dụng tiền tố nén theo mặc định
Với WiredTiger, MongoDB sử dụng cả bộ đệm bên trong WiredTiger và bộ đệm hệ thống tệp
Bắt đầu từ MongoDB 3. 4, kích thước bộ nhớ cache bên trong WiredTiger mặc định là lớn hơn cả
-
50% (RAM - 1 GB) hoặc
-
256 MB
Ví dụ, trên một hệ thống có tổng số RAM 4GB, bộ đệm Wiredtiger sẽ sử dụng 1,5GB RAM (
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
0). Ngược lại, một hệ thống có tổng số 1,25 GB RAM sẽ bổ sung 256 MB cho bộ đệm Wiredtiger vì đó là hơn một nửa tổng số RAM trừ đi một gigabyte (
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
1)
Ghi chú
Start from version 4. 2, MongoDB sẽ loại bỏ công cụ lưu trữ MMAPV1 không sử dụng
Đúng. Nhìn thấy
Change to setting to Wiredtiger
Change the copy copy to Wiredtiger
-
Thay cụm từ Sharded thành Wiredtiger
-
Invalid data rate so with non-compression data phụ thuộc vào dữ liệu của bạn và thư viện nén được sử dụng. Theo mặc định, dữ liệu được thu thập trong WiredTiger sử dụng khối nén Snappy; . Chỉ số dữ liệu sử dụng tiền tố nén theo mặc định
-
Dữ liệu được thu thập trong bộ đệm nội bộ Wiredtiger không bị nén và sử dụng một biểu tượng khác với định dạng trên đĩa. Nén khối có thể cung cấp tiết kiệm nhiên liệu lưu trữ trên đĩa đáng kể, nhưng dữ liệu không được nén để máy chủ thao tác đột xuất
Thông qua bộ đệm hệ thống tệp, MongoDB tự động sử dụng tất cả bộ nhớ miễn phí không được sử dụng bởi bộ đệm WiredTiger hoặc bởi các quy trình khác
Để điều chỉnh kích thước của bộ đệm nội bộ Wiredtiger, hãy xem
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 và
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
0. Không tăng kích thước bộ đệm bên trong WiredTiger trên giá trị mặc định của nó
Ghi chú
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 limit size of internal buffers Wiredtiger. Hệ điều hành sẽ sử dụng bộ nhớ miễn phí có sẵn cho bộ nhớ cache của hệ thống tệp hệ thống, cho phép tệp dữ liệu MongoDB được nén trong bộ nhớ. Ngoài ra, hệ điều hành sẽ sử dụng bất kỳ RAM miễn phí nào cho các khối tệp hệ thống và bộ đệm tệp hệ thống
Để phù hợp với những người dùng sử dụng RAM bổ sung, bạn có thể phải giảm kích thước bộ nhớ cache bên trong Wiredtiger
Bộ đệm giá trị kích thước bên trong WiredTiger mặc định giả định rằng có một phiên bản
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 cho mỗi máy. Nếu một máy duy nhất chứa nhiều phiên bản MongoDB, thì bạn nên giảm cài đặt để phù hợp với các phiên bản ______02 khác
If you run
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 in an container (ví dụ.
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
5,
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
6, Docker, v. v. ) không có quyền truy cập vào tất cả RAM có sẵn trong hệ thống, bạn phải đặt
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 thành giá trị thấp hơn lượng RAM có sẵn trong vùng chứa. Số tiền chính xác phụ thuộc vào các quy trình khác chạy trong vùng chứa. Xem
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
8
Để xem thống kê số liệu về bộ đệm và tốc độ xuất của hệ thống, hãy xem trường
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
9 được trả về từ lệnh
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
70
Mỗi kết nối sử dụng tối đa 1 megabyte RAM
Để tối ưu hóa việc sử dụng bộ nhớ cho các kết nối, hãy đảm bảo rằng bạn
-
Giám sát số lượng kết nối mở để bạn khai thác. Quá nhiều kết nối mở dẫn đến việc sử dụng RAM quá mức và giảm bộ nhớ có sẵn cho bộ hoạt động
-
Các nhóm kết nối gần kề khi chúng không còn cần thiết. Nhóm kết nối là bộ đệm của các cơ sở dữ liệu kết nối mở, sẵn sàng sử dụng được duy trì bởi trình điều khiển. Đóng các hồ bơi không cần thiết để làm cho tài nguyên bộ nhớ bổ sung có sẵn
-
Management size of your connection group. Tùy chọn chuỗi kết nối
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
71 Chỉ số lượng kết nối mở tối đa trong nhóm. Theo mặc định, bạn có thể có tối đa 100 kết nối mở trong nhóm. Giảm
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
71 làm giảm dung lượng RAM tối đa được sử dụng cho các kết nối
mẹo
CheckPointSstarting Trong phiên bản 3. 6, MongoDB đã định cấu hình WiredTiger để tạo các điểm kiểm tra (nghĩa là ghi dữ liệu ảnh chụp nhanh vào đĩa) trong khoảng thời gian 60 giây. Trong các phiên bản trước đó, MongoDB đặt các điểm kiểm tra xảy ra trong WiredTiger trên dữ liệu người dùng trong khoảng thời gian 60 giây hoặc khi 2 GB dữ liệu phức tạp đã được viết, tùy theo điều kiện xảy ra.
-
Đối với các thành viên tập hợp bản sao (thành viên chính và phụ),
-
If have an activities are queue oplog. Các hoạt động có thể chờ các mục Oplog bao gồm
-
Ngoài ra, đối với các thành viên cấp cao, sau mỗi lần áp dụng hàng loạt mục Oplog
-
If an an activity write bao gồm hoặc mối quan tâm ghi của
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
73
Ghi chú
-
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 limit size of internal buffers Wiredtiger. Hệ điều hành sẽ sử dụng bộ nhớ miễn phí có sẵn cho bộ nhớ cache của hệ thống tệp hệ thống, cho phép tệp dữ liệu MongoDB được nén trong bộ nhớ. Ngoài ra, hệ điều hành sẽ sử dụng bất kỳ RAM miễn phí nào cho các khối tệp hệ thống và bộ đệm tệp hệ thống
-
Để phù hợp với những người dùng sử dụng RAM bổ sung, bạn có thể phải giảm kích thước bộ nhớ cache bên trong Wiredtiger
Bộ đệm giá trị kích thước bên trong WiredTiger mặc định giả định rằng có một phiên bản
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 cho mỗi máy. Nếu một máy duy nhất chứa nhiều phiên bản MongoDB, thì bạn nên giảm cài đặt để phù hợp với các phiên bản ______02 khác
If you run
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 in an container (ví dụ.
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
5,
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
6, Docker, v. v. ) không có quyền truy cập vào tất cả RAM có sẵn trong hệ thống, bạn phải đặt
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
2 thành giá trị thấp hơn lượng RAM có sẵn trong vùng chứa. Số tiền chính xác phụ thuộc vào các quy trình khác chạy trong vùng chứa. Xem
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
8
Để xem thống kê số liệu về bộ đệm và tốc độ xuất của hệ thống, hãy xem trường
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
9 được trả về từ lệnh
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
70
Mỗi kết nối sử dụng tối đa 1 megabyte RAM. ______080 . Ví dụ sau phát hành
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
75 cho bộ sưu tập
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
82.
Để tối ưu hóa việc sử dụng bộ nhớ cho các kết nối, hãy đảm bảo rằng bạn
-
Giám sát số lượng kết nối mở để bạn khai thác. Quá nhiều kết nối mở dẫn đến việc sử dụng RAM quá mức và giảm bộ nhớ có sẵn cho bộ hoạt động
-
Các nhóm kết nối gần kề khi chúng không còn cần thiết. Nhóm kết nối là bộ đệm của các cơ sở dữ liệu kết nối mở, sẵn sàng sử dụng được duy trì bởi trình điều khiển. Đóng các hồ bơi không cần thiết để làm cho tài nguyên bộ nhớ bổ sung có sẵn
-
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
87 to return the size only target item by byte for collection. Nếu một mục sử dụng nén tiền tố chỉ mục (là
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
85), kích thước được trả về kích thước nén
The command after here in the data system cho mỗi cơ sở dữ liệu
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
5
The command after here in the data system for each collections in each database
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
Để xem kích thước của dữ liệu được phân bổ cho từng mục, hãy sử dụng phương thức
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
75 và kiểm tra trường
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
70 trong tài liệu được trả về
Nếu một chỉ mục sử dụng tiền tố nén (là
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
71), kích thước được trả lại cho chỉ số đó phản ánh kích thước nén
Phương thức
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
72 trong
db.adminCommand("listDatabases").databases.forEach(function (d) { mdb = db.getSiblingDB(d.name); mdb.getCollectionNames().forEach(function(c) { s = mdb[c].stats(); printjson(s); })})
80 trả về trạng thái hiện tại của cơ sở dữ liệu " hoạt động". Để biết mô tả của các trường được trả về, hãy xem đầu ra của DBSTATS. ______080 trả về trạng thái hiện tại của cơ sở dữ liệu "đang hoạt động". Để biết mô tả về các trường được trả về, xem Đầu ra dbStats.
Làm thế nào để MongoDB lưu trữ dữ liệu trên đĩa?
MongoDB lưu trữ dữ liệu trên đĩa dưới dạng BSON trong thư mục đường dẫn dữ liệu của bạn, thường là /dữ liệu /db. Cần có hai tập tin cho mỗi bộ sưu tập ở đó, bộ sưu tập. 0, save archive data (và số nguyên sau đó được tăng lên theo nhu cầu) và thu thập. Siêu dữ liệu lưu trữ siêu dữ liệu đặt tên cho bộ sưu tập. dưới dạng BSON trong thư mục đường dẫn dữ liệu của bạn, thường là /data/db . Nên có hai tệp cho mỗi bộ sưu tập ở đó, bộ sưu tập. 0, lưu trữ dữ liệu (và số nguyên đó sau đó được tăng lên khi cần) và bộ sưu tập. ns lưu trữ siêu dữ liệu không gian tên cho bộ sưu tập.
MongoDB có lưu vào đĩa không?
Các tài liệu được lưu trữ trên đĩa bằng cách sử dụng khối nén để giảm sử dụng lưu trữ. Các tài liệu tự động không bị nén trong bộ nhớ khi máy chủ MongoDB truy xuất. Mỗi bộ sưu tập & chỉ mục được lưu trữ trong một tệp riêng trong bộ lưu trữ