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。