我在尝试将数据插入MongoDB时遇到"存储空间不足"错误。但从统计数据来看,我的体型还远远没有达到极限。
> db.stats()
{
"db" : "{my db name}",
"collections" : 20,
"objects" : 281092,
"avgObjSize" : 806.4220539894412,
"dataSize" : 226678788,
"storageSize" : 470056960,
"numExtents" : 95,
"indexes" : 18,
"indexSize" : 13891024,
"fileSize" : 1056702464,
"nsSizeMB" : 16,
"ok" : 1
}
日志记录已打开,但日志文件大小只有262232 KB。
已创建大小为524032 KB的数据文件,尽管dataSize低于262144 KB的较小文件。
NS文件大小为16384 KB。
我读过很多地方说这个错误是由大约2GB的32位大小限制引起的,但为什么我的dataSize低于这个值时会出现这个错误呢?
首先。该约束适用于fileSize,因为存储引擎使用内存映射的文件。这对您来说目前是1Gb。可能是MongoDB即将预先分配一个新的数据文件,该文件的大小可能为1Gb(默认大小为64mb、128mb、256mb、512mb、1Gb,此后每个额外的数据文件的大小为2Gb)。你可能已经到了拥有512mb但没有1Gb的地步。
坦率地说,我认为在32位环境中使用MongoDB是绝对不可行的,但如果你坚持使用它,你可以尝试--smallfiles选项,它可以分配最多512Mb的较小文件。