Dex – MongoDB索引优化工具如何使用及其原理是什么

分类:编程技术 时间:2024-02-20 15:38 浏览:0 评论:0
0
Dex - 如何使用 MongoDB 索引优化工具及其原理是什么。很多新手对此并不是很清楚。为了帮助大家解决这个问题,下面小编就来详细讲解一下。有这方面需求的人可以过来学习。希望你能有所收获。

Dex是一款开源的MongoDB优化工具,可以分析查询日志和当前数据库索引,向管理员提出高效的索引优化策略。

如何使用Dex – MongoDB索引优化工具

安装

pip install dex

开始监控

dex -f mongodb.log mongodb://localhost

监控过程中,dex 会通过 stderr 输出推荐结果

远{

远"index": " {'simpleIndexedField': 1, 'simpleUnindexedFieldThree': 1}",

"namespace": "dex_test.test_collection"

"shellCommand": "db.test_collection.ensureIndex(< /p>

{'simpleIndexedField': 1, 'simpleUnindexedFieldThree':1}, {'background': true})"

还会输出一些统计信息

读取的总行数:7

理解的查询行:7

独特的建议:5

受建议影响的行:5

p>

我们在输出中看到结果里面有一个shellCommand字段,里面有添加索引的语句,如果你觉得dex推荐的不错,可以直接复制这个脚本给MongoDB添加索引,相当方便。

中除了在操作名时向stderr输出信息外,操作完成后,推荐信息会被打包成一个大的JSON对象,并在stdout中输出一次。

Dex – MongoDB索引优化是如何工作的? p>

Dex在运行过程中主要执行以下三个步骤:

【1.解析查询

【2.通过现有索引判断当前查询

 3.如果发现索引不合适,推荐一个合适的索引

第一条步骤:解析查询

Dex会解析查询并将其分为以下几类

EQUIV – 基于数值的普通查询,例如:{a: 1}

SORT – 排序操作,如:.sort({a: 1})

RANGE – 范围查询,如: 具体为: '$ne', ' $gt', ' $lt', '$gte', '$lte', '$in', '$nin', '$all', '$not'

不支持

组合查询,如:$and、$or、$nor

除RANGE之外的嵌套查询

第二步:判断当前索引情况

有两个条件查找查询所需的索引。

Coverage(none、partial、full)——Coverage代表索引,括号内有三个值。 none 意味着根本没有索引覆盖。 Full表示查询中的所有字段都可以在索引中找到。 Partial代表的是介于none和full之间的情况。

顺序(理想与否)-顺序用于确定索引的顺序是否理想。理想的索引顺序应该是:

等价 ○Sort ○ Range

值得注意的是,只会分析地理位置索引,但不会提出改进建议。

第三步:推荐合适的索引

通过上面两个步骤,我们可以了解一次查询可能使用索引的情况。 Dex 将为该查询生成一个最优索引。如果这个索引不存在,并且查询情况不包含上面提到的UNSUPPORTED,那么Dex就会提出相应的索引优化建议。

Dex未来还将推出许多新功能,例如使用system.profile日志进行推荐、支持地理索引等,详细信息可以在其项目主页找到。

阅读以上内容对您有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道。感谢您的支持。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Dex – MongoDB索引优化工具如何使用及其原理是什么

用户评论