我已经读过一条建议,即MongoDB数据库的大小不应超过服务器上RAM的两倍。我尝试使用https://github.com/brianfrankcooper/YCSB来测试这个建议,但到目前为止看起来我看到的性能损失仅在加载到数据库(写入)期间而不是读取操作。
我的服务器上有192GB RAM,所以我比较了两个数据库:
db.stats报告“正常大小”db的索引大小为20GB,而大型DB的索引大小为60GB。
加载小型数据库需要2300秒。由于内存有限,我预计加载“大尺寸”数据库需要4次以上。它实际上需要30310秒,这是加载“正常大小”数据库的时间的13倍。
我测试的很少 - 根据YCSB基准定义:
在我测试的所有工作负载和客户端线程的veraity数量中,大型数据库的吞吐量读数是正常大小数据库的+/- 10%。
我的主要问题:
经过一些研究,我认为我的测试可能不够好。那是因为YCSB默认使用zipfian分发。这意味着我在RAM中的数据集包含测试中大多数查询的数据。
似乎更好的测试将是“均匀”分布而不是拉链。