用mongodb作为数据库服务器访问时非常慢?

我以前用mysql数据库作为数据库服务器,但是有的表有几百万条,访问非常慢,有时表死掉。后来用mongodb作为数据库服务器,上面有15个mongodb数据库,其他服务器... 我以前用mysql数据库作为数据库服务器,但是有的表有几百万条,访问非常慢,有时表死掉。后来用mongodb作为数据库服务器,上面有15个mongodb数据库,其他服务器上有一些PHP网站跨服务器访问这台服务器上mongodb,但是非常慢。瞬间好些(1-2秒),但其他时间非常慢。请问这个是什么原因?怎么解决?谢谢!还是就是用mongodb和mysql的利弊,谢谢! 展开
 我来答
百度网友076219b
推荐于2018-04-06 · TA获得超过2681个赞
知道小有建树答主
回答量:540
采纳率:66%
帮助的人:194万
展开全部
  你查看一下,如果数据文件大于系统内存,查询速度会下降几个数量级,因为mongodb是内存数据库。我以前测试过,1000万数据的时候没有索引情况下查询可能会几秒钟甚至更久。

  这种情况,你最好给经常查询的项创建索引,有索引以后查询速度会非常非常非常的快。

  另外一点是数据索引如果大于内存,速度也会下降很多。而且对于多条件查询,如果你查询的顺学和索引顺序不同,也不能使用索引。这个要慢慢摸索

  如果你使用了replica set,这个会影响写入速度的,三个replica set,速度会降低到三分之一。

  大概主要影响速度的就是这几点吧,如果你需求不是非常复杂,我以前测试mongodb速度方面优化好的情况下还是可以接受的。希望能帮到你
kaisa1028
2013-12-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2569万
展开全部

因为mongodb使用memory-mapped file,所以mongodb运行时os会不停的把mongodb需要的数据库文件的部分内容读入物理内存里,所以:

  • 如果没有合适的index,query的时候os需要把整个mongodb需要的文档全部读进物理内存,数据的大小超过物理内存的时候就会变慢。

  • query不同的db的时候,如果上一个query正好是同一个db,那么需要的那部分内容都已经在物理内存里了,就会很快;如果上一个query是一个大数据库,当前的query是另一个大数据库,os会需要腾出物理内存,然后把这次query需要的内容读进物理内存,这样就会变慢。

  • 如果你的硬盘读写速度本身就很慢,那mongodb自然也会很慢。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式