我运行了一个mongodb实例,该实例插入了来自应用程序服务器的日志。当前生产中的插入速度是每秒10次插入。这是一个有上限的集合。我不使用任何索引。当有少量记录时,查询运行得更快。只有一个集合有这么大的数据量。即使是从只有很少行的集合中查询也变得非常慢。有没有什么方法可以提高性能。
-Avinash
发布于 2011-06-14 23:12:50
这是一个很难回答的问题,因为我们不太了解您的配置或文档结构。
有一件事立即出现在我的脑海中,那就是你的内存正在耗尽。每秒10次插入没有多大意义,因为我们不知道插入的文档有多大。
如果您以每秒10个的速度插入较大的文档,则可能会消耗内存,导致操作系统将某些记录推送到磁盘。
如果在不使用索引的情况下进行查询,则必须扫描每个文档。如果您的文档已被操作系统推送到磁盘,您将开始出现页面错误。Mongo将需要从硬盘中获取页面数据,并将其加载到内存中,以便进行扫描。在执行此操作之前,操作系统需要通过将内存的其他部分刷新到磁盘来为内存中的数据腾出空间。
听起来你是受I/O限制的,你能做的最重要的两件事是
mongod发布于 2011-06-14 14:50:13
使用适当的索引,尽管这会对在有上限的集合中插入的效率产生一些影响。如果您可以共享集合结构和您正在使用的查询,那会更好。
https://stackoverflow.com/questions/6338186
复制相似问题