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

README.md

indexalizer

index analyzer for mongodb

usage

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).

tips

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

See: http://www.mongodb.org/display/DOCS/Database+Profiler#DatabaseProfiler-Changingthesystem.profileCollectionSize

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: 
"priority_1"
this index is not being used: 
"minMoves_1"
this index is not being used: 
"maxDepth_1_forcedDraw_1_claimed_1_priority_-1_minMoves_1_bestScore_1"

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 http://www.gnu.org/licenses/