MongoDB性能测试:嵌套对象,数组与纯键值对
使用VirtualBox虚拟机搭载Debian11系统进行测试,内存分配2G,硬盘为机械硬盘。mongod进程占用在900M左右,测试过程由于未知原因中有少量swap被使用(45M)。由于未严格控制变量,仅数据之间的相对值有一定参考价值,数据的绝对值无参考价值。这里我们基于MongoDB自带的Profiler来记录单次查询耗时作为性能表现进行比较。
测试数据库中仅一个集合,集合内含文档一千万个,文档内容如下




数据库没有进行过任何优化(包括uLimit),文档除_id外没有索引。
查询语句例:

嵌套对象平均用时(10次):9600ms
数组平均用时(10次):11343.8ms
纯键值对平均用时(10次):9048.3ms
注:无索引情况下直接查询与.count()用时差距较小
结论:如果你想要更快的查询速度,可能纯键值会是更合适的选择。在占用空间上纯键值对也有可以忽略的优势。
如果这对你的数据库建模有帮助,还请不吝一个免费的赞!