
正文
mongodb索引慢,mongodb创建索引太慢了怎么办
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
MongoDB如何优化查询性能?
对于速度比较慢的查询来说,它是最重要的性能分析工具之一。通过查看一个查询的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的。对于任意查询,都可以在最后添加一个explain()调用(与调用sort()或者limit()一样,不过explain()必须放在最后)。
在MongoDB中我们将与主键没有直接关系的图书单独提取到另一个集合,用存储主键的方式进行关联查询。当我们要查询文章和评论时需要先查询到所需的文章,再从文章中获取评论id,最后用获得的完整的文章及其评论。在这种情况下查询性能显然是不理想的。
建立好合适索引,尽量使用更多的精确查询搭配模糊查询一起,不需要返回的字段要屏蔽,增大机器内存,使用固态硬盘,海量数据使用集群部署。
相关问答
Q1: 用mongodb作为数据库服务器访问时非常慢?
如果你的硬盘读写速度本身就很慢,那mongodb自然也会很慢。
这样的设计方式是在非关系型数据库中常用的,也就是我们所说的范式化设计。在MongoDB中我们将与主键没有直接关系的图书单独提取到另一个集合,用存储主键的方式进行关联查询。当我们要查询文章和评论时需要先查询到所需的文章,再从文章中获取评论id,最后用获得的完整的文章及其评论。
MongoDB对单独的MR作业并不使用多线程——它仅仅对多作业使用多线程。但通过多核CPU,在单个服务器使用Hadoop风格来并行作业非常有优势。我们需要做的是把输入分成几块,通过各个块来加速一个MR作业。
没有超时限制,系统出了问题也不容易发现,应该根据实际情况,给出合理的超时时间。通过多次测试发现最长执行时间为6秒,就把超时时间设置成了10000。socket-timeout=10000 //10s 注意:MongoDB在与Spring整合时,如果要配置多个MongDB源,只会启用最后一个mongo:options配置。
如果不正确配置分片,可能会导致性能问题和数据一致性问题。 索引:MongoDB 支持多种类型的索引,但是如果不正确使用索引,可能会导致性能问题。例如,如果使用过多的索引,可能会导致写入操作变慢。 事务:MongoDB 支持多文档ACID事务,但是如果不正确使用事务,可能会导致数据不一致问题。
Q2: 如何正确的使用MongoDB并优化其性能
1、在MongoDB中我们将与主键没有直接关系的图书单独提取到另一个集合,用存储主键的方式进行关联查询。当我们要查询文章和评论时需要先查询到所需的文章,再从文章中获取评论id,最后用获得的完整的文章及其评论。在这种情况下查询性能显然是不理想的。
2、在mongo中也提供了一个explain()方法,该方法能够提供大量与查询相关的信息。对于速度比较慢的查询来说,它是最重要的性能分析工具之一。通过查看一个查询的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的。
3、MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。
4、更新频繁的并不是mongodb的优势,建议使用缓存数据库和mongodb搭配使用,更新频繁的数据使用缓存存储,一定时间再同步到mongodb中。
5、游戏场景,使用MongoDB存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新。物流场景,使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
mongodb索引慢的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mongodb创建索引太慢了怎么办、mongodb索引慢的信息别忘了在本站进行查找喔。





