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} p>
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日志进行推荐、支持地理索引等,详细信息可以在其项目主页找到。
阅读以上内容对您有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道。感谢您的支持。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > Dex – MongoDB索引优化工具如何使用及其原理是什么