index analyzer for mongodb
Switch branches/tags
Nothing to show
Latest commit b5a11c0 May 16, 2017 @freeeve committed on GitHub Update
Failed to load latest commit information. Update May 16, 2017
indexStats.js Fixing potential bug when explain doesn't return a cursor. Sep 15, 2012


index analyzer for mongodb


Step 1: In the db you'd like to analyze, from the mongo shell, run db.setProfilingLevel(2); (be careful if you're doing this in a production system, because it will affect performance)

Step 2: So far this only has a couple of hours put into it--a lot more to come. For now, you can copy the javascript in indexStats.js into the mongo shell (or use --shell and specify indexStats.js as the final parameter; see below), and then run db.indexStats(). It will provide you with a list of indexes that aren't being used, as well as a list of queries that aren't using any indexes (which might not be the end of the world).


You may need to increase your profile collection size (it's a capped collection), if you want full results.


example run

$ mongo mongochess --shell indexStats.js
> db.indexStats();
scanning profile {ns:"mongochess.positions"} with 3351 records... this could take a while.
warning, no index for query {ns:"mongochess.positions"}: 
{ "query" : { "moves.score" : 2 }, "orderby" : { "bestScore" : 1 } }
... millis: 47
... nscanned/n: 16334/0
... scanAndOrder: true
warning, no index for query {ns:"mongochess.positions"}: 
{ "moves.score" : 2 }
... millis: 48
... nscanned/n: 16334/0
... scanAndOrder: false
checking for unused indexes in: positions
this index is not being used: 
this index is not being used: 
this index is not being used: 

license LGPL

Copyright 2014 Eve Freeman

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see