You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft/faq/storage.txt
+36-28Lines changed: 36 additions & 28 deletions
Original file line number
Diff line number
Diff line change
@@ -15,29 +15,30 @@ the :doc:`complete list of FAQs </faq>` or post your question to the
15
15
:backlinks: none
16
16
:local:
17
17
18
-
What are Memory Mapped Files?
18
+
What are memory mapped files?
19
19
-----------------------------
20
20
21
-
Memory mapped files are segments of virtual memory which have been assigned a direct byte-for-byte correlation with some portion of a file or resource. Once present, this correlation between the file and the memory space permits applications to treat the mapped portion as if it were primary memory.
21
+
Memory mapped files are segments are a way of keeping files and data
22
+
up to date in memory using the system call ``mmap()``. MongoDB uses
23
+
memory mapped files as its storage engine. By using memory mapped
24
+
files MongoDB can treat the content of its data files as if they were
25
+
in memory. This provides MongoDB with an extremely fast and simple
26
+
method for accessing and manipulating data.
22
27
23
-
How does memory-mapped file access work in MongoDB?
24
-
----------------------------------------
28
+
How do memorymapped files work?
29
+
--------------------------------
25
30
26
-
MongoDB uses memory-mapped files for memory management.
31
+
Memory mapping assigns files to a block of virtual memory with a
32
+
direct byte-for-byte correlation. Once mapped, the relationship
33
+
between file and memory, allows MongoDB to interact with the data in
34
+
the file as if it were memory.
27
35
28
-
MongoDB memory maps the files when they are first accessed; you're letting the OS know you'd like the contents of the files available as if they were in some portion of memory. It should be noted that each OS caches its own components in memory, and also provides memory buffers for network connections and disk drivers in addition to applications.
29
-
30
-
This doesn't necessarily mean the files are in memory already-- when you go to
31
-
access any point, the OS checks if this 'page' is in physical ram or
32
-
not.
33
-
34
-
If the page is already in memory, it returns whatever's in memory in that location. If the page is not in memory, then it will fetch that portion of the file, make sure it's in memory, and then return it to you.
35
-
36
-
Writing works in the same fashion-- MongoDB tries to write to a memory
37
-
page. If the page is in RAM, then it works quickly (just swapping some bits
38
-
in the memory). The page will then be marked as 'dirty' and the OS
39
-
will take care of flushing it back to disk, persisting your changes.
36
+
How does MongoDB work with memory mapped files?
37
+
-----------------------------------------------
40
38
39
+
MongoDB uses memory mapped files for managing and interacting with all
40
+
data. MongoDB memory maps data files to memory as it accesses
41
+
documents. Data that isn't accessed is *not* mapped to memory.
41
42
42
43
What are page faults?
43
44
---------------------
@@ -53,25 +54,32 @@ load it into RAM...an expensive task, overall.
53
54
What is the difference between soft and hard page faults?
A page fault implies a "hard" page fault, which requires disk access. A "soft" page fault merely moves memory pages from one list to another, and is not as expensive.
57
+
:term:`Page faults <page fault>` occur when MongoDB needs access to
58
+
data that isn't currently in active memory. A "hard" page fault,
59
+
refers to situations when MongoDB must access a disk to access the
60
+
data. A "soft" page fault, by contrast merely moves memory pages from
61
+
one list to another, and does not require as much time to complete.
57
62
58
63
What tools can I use to investigate storage use in MongoDB?
There is a command whose output provides the current state of the "active" database, see :doc: 'Database Statistics Reference </reference/database-statistics>'.
66
+
The :func:`db.stats()` function in the :program:`mongo` shell, will
67
+
output the current state of the "active" database. The
68
+
:doc:`/reference/database-statistics` document outlines the meaning of
69
+
the fields output by :func:`db.stats()`.
62
70
63
71
What is the working set?
64
72
------------------------
65
73
66
-
The working set is an approximation of the set of pages that a certain process will access in the future (say, during the next 't' time units), and more specifically is suggested to be an indication of what pages ought to be kept in main memory to allow most progress to be made in the execution of that process.
74
+
Working set represents the total body of data that the application
75
+
uses in the course of normal operation. Often this is a subset of the
76
+
total data size, but the specific size of working set depends on
77
+
actual moment-to-moment use of the database.
67
78
68
-
A common misconception in using MongoDB is that the working set can be
69
-
reduced to a discrete value. It's important to understand that the
70
-
working set is simply a way of thinking about the data one is
71
-
accessing and that which MongoDB is working with frequently.
79
+
If you run a query that requires MongoDB to scan every
80
+
:term:`document` in a collection, the working set includes every
81
+
document in memory.
72
82
73
-
For instance, if you are running a query that has to do a full table scan, then your working set is every document scanned.
74
-
Conversely, if your query only reads the most recent 100
75
-
documents, then the working set will be those 100 documents.
83
+
For best performance, the majority of your *active* set should fit in
0 commit comments