mongodb默认存储引擎是memory-mapped。当mongod服务启动后,将所有数据文件映射到内存中。操作系统的任务是刷新数据到磁盘和管理页数据的输入输出。

这种存储引擎有一下特性:

1Mongodb代码中关于管理内存的代码非常精简。因为大部分工作是交由操作系统进行的。

2.mongodb服务进程使用的虚拟内存一般非常巨大,将超过整个数据集的大小。不必担心,因为操作系统将处理保持在内存中数据的数量。

3. MongoDB无法控制的数据写入到磁盘顺序,这将导致无法使用writeahead日志以提供单台服务器的持久性。目前mongodb正在研发替代存储引擎来解决这一问题。

4.32位操作系统的mongodb服务器每mongod实例最大的数据文件限制为2G。这是因为所有的数据都必须只使用32位寻址。

 

因此在mongod日志中,会有如下信息:

Mon May  9 15:37:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:38:09 [DataFileSync] flushing mmap took 1ms  for 8 files
Mon May  9 15:39:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:40:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:41:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:42:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:43:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:44:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:45:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:46:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:47:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:48:09 [DataFileSync] flushing mmap took 1ms  for 8 files
Mon May  9 15:49:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:50:09 [DataFileSync] flushing mmap took 0ms  for 8 files
Mon May  9 15:51:09 [DataFileSync] flushing mmap took 0ms  for 8 files