Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-14928

$geoIntersect Poor Performance on 2.6.4

    • Type: Icon: Bug Bug
    • Resolution: Incomplete
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 2.6.3, 2.6.4
    • Component/s: Geo
    • Labels:
      None
    • ALL
    • Hide

      Just run the sample query.
      results are taking more than 1 sec to complete.
      Also happened on 2.6.3

      Show
      Just run the sample query. results are taking more than 1 sec to complete. Also happened on 2.6.3

      geoIntersect queries are getting very long to complete (~1300ms) against a collection with 5530 polygons / multi polygons (154.41mb)

      The query generally returns 2 or 3 documents.

      Sample Query:

      db.locations.find({"l": {"$geoIntersects": {"$geometry": {"type": "Point", "coordinates": [-47.81302261352539, -21.18204307556152]}}}}, {"m":1,"s":1,"n":1, "c":1})
      

      Query Explain Output:

      {
      	"cursor" : "BtreeCursor l_2dsphere",
      	"isMultiKey" : true,
      	"n" : 2,
      	"nscannedObjects" : 2,
      	"nscanned" : 5,
      	"nscannedObjectsAllPlans" : 2,
      	"nscannedAllPlans" : 5,
      	"scanAndOrder" : false,
      	"indexOnly" : false,
      	"nYields" : 1,
      	"nChunkSkips" : 0,
      	"millis" : 1368,
      	"indexBounds" : {
      		"l" : [
      			[
      				"4f2211303",
      				"4f2211303"
      			],
      			[
      				"4f22113031",
      				"4f22113031"
      			],
      			[
      				"4f221130313",
      				"4f221130313"
      			],
      			[
      				"4f2211303133",
      				"4f2211303133"
      			],
      			[
      				"4f22113031331",
      				"4f22113031332"
      			]
      		]
      	},
      	"server" : "c0:27017",
      	"filterSet" : false
      }
      

      Collection Stats:

      {
        ns: "pinion.locations",
        count: 5530,
        size: 80728672,
        avgObjSize: 14598,
        storageSize: 161910784,
        numExtents: 4,
        nindexes: 4,
        lastExtentSize: 90599424,
        paddingFactor: 1,
        systemFlags: 1,
        userFlags: 1,
        totalIndexSize: 11250176,
        indexSizes: {
          _id_: 188048,
          l_2dsphere: 10358992,
          t_1: 335216,
          n_1: 367920
        },
        ok: 1
      }
      

      Collection Indexes:

      [
      	{
      		"v" : 1,
      		"key" : {
      			"_id" : 1
      		},
      		"name" : "_id_",
      		"ns" : "pinion.locations"
      	},
      	{
      		"v" : 1,
      		"key" : {
      			"l" : "2dsphere"
      		},
      		"name" : "l_2dsphere",
      		"ns" : "pinion.locations",
      		"background" : true,
      		"safe" : true,
      		"2dsphereIndexVersion" : 2
      	},
      	{
      		"v" : 1,
      		"key" : {
      			"t" : 1
      		},
      		"name" : "t_1",
      		"ns" : "pinion.locations",
      		"background" : true,
      		"safe" : true
      	},
      	{
      		"v" : 1,
      		"key" : {
      			"n" : 1
      		},
      		"name" : "n_1",
      		"ns" : "pinion.locations",
      		"background" : true,
      		"safe" : true
      	}
      ]
      

      The documents are large polygon areas like states, districts and municipalities.
      Some are regular Polygons, other are MultiPolygons.

      The database is running on a Replica Set managed by Compose.io (ex MongoHQ) with a lot of idle hardware.

      I have MMS monitoring enabled should more stats are needed.

      Locks and Queues are very very low, all other queries returns very fast, including geoNear queries on other collections.

            Assignee:
            Unassigned Unassigned
            Reporter:
            ygbr@mac.com Ygor Lemos
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: