用mongodb作为数据库服务器访问时非常慢?
我以前用mysql数据库作为数据库服务器,但是有的表有几百万条,访问非常慢,有时表死掉。后来用mongodb作为数据库服务器,上面有15个mongodb数据库,其他服务器...
我以前用mysql数据库作为数据库服务器,但是有的表有几百万条,访问非常慢,有时表死掉。后来用mongodb作为数据库服务器,上面有15个mongodb数据库,其他服务器上有一些PHP网站跨服务器访问这台服务器上mongodb,但是非常慢。瞬间好些(1-2秒),但其他时间非常慢。请问这个是什么原因?怎么解决?谢谢!还是就是用mongodb和mysql的利弊,谢谢!
展开
2个回答
展开全部
你查看一下,如果数据文件大于系统内存,查询速度会下降几个数量级,因为mongodb是内存数据库。我以前测试过,1000万数据的时候没有索引情况下查询可能会几秒钟甚至更久。
这种情况,你最好给经常查询的项创建索引,有索引以后查询速度会非常非常非常的快。
另外一点是数据索引如果大于内存,速度也会下降很多。而且对于多条件查询,如果你查询的顺学和索引顺序不同,也不能使用索引。这个要慢慢摸索
如果你使用了replica set,这个会影响写入速度的,三个replica set,速度会降低到三分之一。
大概主要影响速度的就是这几点吧,如果你需求不是非常复杂,我以前测试mongodb速度方面优化好的情况下还是可以接受的。希望能帮到你
这种情况,你最好给经常查询的项创建索引,有索引以后查询速度会非常非常非常的快。
另外一点是数据索引如果大于内存,速度也会下降很多。而且对于多条件查询,如果你查询的顺学和索引顺序不同,也不能使用索引。这个要慢慢摸索
如果你使用了replica set,这个会影响写入速度的,三个replica set,速度会降低到三分之一。
大概主要影响速度的就是这几点吧,如果你需求不是非常复杂,我以前测试mongodb速度方面优化好的情况下还是可以接受的。希望能帮到你
展开全部
因为mongodb使用memory-mapped file,所以mongodb运行时os会不停的把mongodb需要的数据库文件的部分内容读入物理内存里,所以:
如果没有合适的index,query的时候os需要把整个mongodb需要的文档全部读进物理内存,数据的大小超过物理内存的时候就会变慢。
query不同的db的时候,如果上一个query正好是同一个db,那么需要的那部分内容都已经在物理内存里了,就会很快;如果上一个query是一个大数据库,当前的query是另一个大数据库,os会需要腾出物理内存,然后把这次query需要的内容读进物理内存,这样就会变慢。
如果你的硬盘读写速度本身就很慢,那mongodb自然也会很慢。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询