Я и мои товарищи по команде используем mongodb 1.8.2.Две из трех сред работают нормально при выполнении следующего геопространственного индексированного запроса:
db.runCommand( {geoNear: "places", near: [-46.65069190000003, -23.5633661],
maxDistance: 0.0006278449223041908, spherical: true,
distanceMultiplier: 6371.0 });
для следующей коллекции из 4032 документов:
{
"ns" : "places",
"count" : 4032,
"size" : 1645724,
"avgObjSize" : 408.1656746031746,
"storageSize" : 2785280,
"numExtents" : 4,
"nindexes" : 2,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"flags" : 1,
"totalIndexSize" : 344064,
"indexSizes" : {
"_id_" : 180224,
"location_2d" : 163840
},
"ok" : 1
}
, выполняющих его в двух разных экземплярах mongodb (один OSX Lion, другой сервер Ubuntu 11.04) набор результатов содержит 100 записей со следующей статистикой выполнения:
"stats" : {
"time" : 0,
"btreelocs" : 522,
"nscanned" : 522,
"objectsLoaded" : 146,
"avgDistance" : 0.4824636947838318,
"maxDistance" : 0.00012637762666867466
},
(пока все в порядке: запрос использует индекс, как вы можете видеть по количеству btreeходьба по узлу)
НО в одной из сред (другая OS X Lion) результаты резко отличаются (3 вместо 100 от других машин) с точно таким же набором данных и индексами:
"stats" : {
"time" : 0,
"btreelocs" : 45,
"nscanned" : 50,
"objectsLoaded" : 6,
"avgDistance" : 0.865580980499049,
"maxDistance" : 0.0001845858750423995
},
Заметно, что запрос выполняется по-другому в этом экземпляре mongod.Я хотел бы знать, какие факторы могут это сделать
То, что я до сих пор пробовал:
- Серверные и клиентские версии Mongodb одинаковы (включая git-хэш)
- Предположительно странная база данных была стерта, восстановлена из дампа BSON и воссозданы индексы
Информация о версии:
db version v1.8.2, pdfile version 4.5
Tue Aug 23 23:33:22 git version: 433bbaa14aaba6860da15bd4de8edf600f56501b