ITPub博客

MongoDB与MMAPV1相关的数据文件简述

原创 NoSQL 作者:chenfeng 时间:2018-06-20 10:22:28 0 删除 编辑
每一个数据库都有一个.ns文件和有单向递增的数值扩展名的多个数据文件。
例如test数据库,会有test.ns、test.1和test.2等文件
对于数据库的每一个新的数值数据文件,其大小将是前一个数值数据文件大小的两倍。文件大小限制是2GB,
如果该文件达到了2G,则后续的数据编号文件也将保持为2GB大小,这一行为会确保小数据库不会浪费过多的
硬盘空间,为确保一致的性能,MongoDB会预先分配数据文件,该过程是在后台进行的,并且在每次填充一个
数据文件时候启动。这意味着MongoDB服务器总是会尝试为每一个数据库保留一个额外的空数据文件,以避免
文件分配时出现阻塞。
如果想分配小文件,可以修改storage.mmapv1.smallFiles参数选项。

.ns命名空间文件
在数据文件中,数据空间会被划分为多个命名空间,其中命名空间对应于一个集合或者一个索引。
这些命名空间的元数据信息存储在.ns文件里,在数据目录里,将会发现一个名为[dbname].ns的文件。用于存储
元数据的.ns文件大小是16MB。
集合命名空间里包含了一些元数据:
集合的名称
集合上的统计信息(计数和大小等)
第一个范围信息
最后一个范围信息
删除列表
索引详情


范围指的是一个数据文件中的一个数据记录分组,因此一个范围分组就组成了一个命名空间的完整数据,范围使用
硬盘位置来指向实际驻留数据的硬盘位置,它由两部分构成:文件编号和偏移量。
文件编号指定了它指向的数据文件(0和1等)
偏移量是文件中的位置,偏移量大小是4KB,因此偏移量的最大值可以被设置为2的31次方-1。
范围数据结构由以下内容构成:
硬盘上的位置
下一个和上一个范围的指针
双链表,维护到其指向数据块的第一个数据记录和最后一个数据记录的指针,也就是文件中的偏移量。


数据记录结构由以下内容构成:
由于数据记录结构是范围双链表的一个元素,因此它会存储上一个和下一个记录的信息
头信息具有长度内容
数据块

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2156368/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
交流MySQL,MongoDB和Redis技术。 微信或QQ:410294

注册时间:2015-12-07

  • 博文量
    664
  • 访问量
    1404365