• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

MongoDB说明

每一个数据库都有自己独立的文件。如果你开启了directoryperdb选项,那你每个库的文件会单独放在一个文件夹里。
数据库文件在内部会被切分成单个的块,每个块只保存一个名字空间的数据。在MongoDB中,名字空间用于区分不同的存储类别。比如每个collection有一个独立的名字空间,每个索引也有自己的名字空间。
每个数据文件会被分成一个一个的数据块,块与块之间用双向链表连接
名字空间文件中,保存的是一个hash table,保存了每个名字空间的存储信息元数据,包括其大小,块数,第一块位置,最后一块位置,被删除的块的链表以及索引信息
数据文件从16MB开始,新的数据文件比上一个文件大一倍,最大为2GB
文件使用MMAP进行内存映射,会将所有数据文件映射到内存中,但是只是虚拟内存,只有访问到这块数据时才会交换到物理内存。
但是在32位机器上,4GB内存会有1GB被内核战用,大约0.5GB会用于mongod进程的stack空间,只剩下大约2.5GB可用于映射数据文件。
缓存重建:
重启MongoDB不会导致MongoDB的缓存失效(除非重启服务器)
当你重新mount磁盘时,文件系统的缓存会失效,这和重启机器时一样,Mon需要进行缓存重建与预热。
MongoDB采用mmap来将数据文件映射到内存中,所以当MongoDB重启时,这些映射的内存并不会清掉,因为它们是由操作系统维护的(所以当操作系统重启时,MongoDB才会有相同问题)。相对于其它一些自己维护Cache的数据库,MongoDB在重启后并不需要进行缓存重建与预热。
内存映射
内存映射的原理就是让操作系统将一个文件映射到一段内存中,然后在操作这个文件内存就可以像操作内存一样。
使用内存情况:
http://blog.nosqlfan.com/html/2865.html
WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl --interleave=all mongod [other options]
MongoDB容量规划: 1 热数据量 2 索引量 3 连接数量(默认是一条连接10M)
http://blog.nosqlfan.com/html/3322.html
这里的结论是尽量不要用ext3,用ext4或者xfs。
db.status()
storageSize  数据大小,包括预分配空间
indexSize 索引大小   
这两个加起来是数据占用空间的大小
posted @ 2012-10-14 18:50  不若相忘于江湖  阅读(1698)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3