mongoDB在从节点上单独建索引

本文介绍了如何在MongoDB的从节点上创建索引来优化查询性能。首先,将从库暂停并以独立模式启动,然后构建索引,最后作为复制集成员重启。在主节点上查询时显示COLLSCAN,在带有索引的从节点上则显示IXSCAN,表明索引生效。这种方法能避免影响主节点,但需要注意,从节点升级为主节点后,索引不会同步,因为standalone模式不记录oplog。
摘要由CSDN通过智能技术生成

How to create index on a secondary node

  • Stop One Secondary and Restart as a Standalone

  • Build the Index

  • Restart the Program mongod as a Replica Set Member

在文档中看到mongo可以在某个从节点上单独键一个索引,可以用来针对性分析sql性能。

原理很简单,就是把一个从库down掉用standalone的方式起起来,建好索引再用复制集的方式重启。效果如下。

login to primary
db.test.find({"name":"Tom31"}).explain() --COLLSCAN
"winningPlan" : {
                        "stage" : "COLLSCAN",
                        "filter" : {
                                "name" : {
                                        "$eq" : "Tom31"
                                }
                                ...
                                
secondary
db.test.find({"name":"Tom31"}).explain() --IXSCAN
"winningPlan" : {
                        "stage" : "FETCH",
                        "inputStage" : {
                                "stage" : "IXSCAN",
                                "keyPattern" : {
                                        "name" : 1
                                    ...}
对于同一张表的查询,不同节点走的计划不同collscan/ixscan

如果把这个从节点提为主节点,也不会有索引的同步,因为standalone不会记录oplog。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值