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

Poor performance in small collection when querying with a regex with no prefix

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: Querying
    • Labels:
      None
    • ALL

      I'm running a query against a collection with 27,576 documents. Occasionally, queries against this which normally return in a few milliseconds, will suddenly take 50 seconds or more. Any idea what's happening here?

      The query (I'm using the MongooseJS driver):

      var regExp = [new RegExp("^[A-Z]+$")];
      var query = models.MeSH.find(
      	{
      		"TreeNumberList.TreeNumber": {$in: regExp}
      	}).hint({"TreeNumberList.TreeNumber": 1});
      

      The array of regular expressions might look odd, but this is simplified code; occasionally it contains 2 regexes.
      Profile data:

      {
      	"op" : "query",
      	"ns" : "figure1.meshdescriptors",
      	"query" : {
      		"$query" : {
      			"TreeNumberList.TreeNumber" : {
      				"$in" : [
      					/^[A-Z]+$/
      				]
      			}
      		},
      		"orderby" : {
      			"TreeNumberList.TreeNumber" : 1
      		},
      		"$hint" : {
      			"TreeNumberList.TreeNumber" : 1
      		}
      	},
      	"ntoreturn" : 0,
      	"ntoskip" : 0,
      	"nscanned" : 56348,
      	"nscannedObjects" : 27463,
      	"keyUpdates" : 0,
      	"numYield" : 3246,
      	"lockStats" : {
      		"timeLockedMicros" : {
      			"r" : NumberLong(4649093),
      			"w" : NumberLong(0)
      		},
      		"timeAcquiringMicros" : {
      			"r" : NumberLong(2417056),
      			"w" : NumberLong(2780)
      		}
      	},
      	"nreturned" : 16,
      	"responseLength" : 5751,
      	"millis" : 51795,
      	"execStats" : {
      		"type" : "FETCH",
      		"works" : 59541,
      		"yields" : 3394,
      		"unyields" : 3394,
      		"invalidates" : 0,
      		"advanced" : 16,
      		"needTime" : 56332,
      		"needFetch" : 3192,
      		"isEOF" : 1,
      		"alreadyHasObj" : 0,
      		"forcedFetches" : 0,
      		"matchTested" : 16,
      		"children" : [
      			{
      				"type" : "IXSCAN",
      				"works" : 56348,
      				"yields" : 3394,
      				"unyields" : 3394,
      				"invalidates" : 0,
      				"advanced" : 27463,
      				"needTime" : 28885,
      				"needFetch" : 0,
      				"isEOF" : 1,
      				"keyPattern" : "{ TreeNumberList.TreeNumber: 1 }",
      				"isMultiKey" : 1,
      				"boundsVerbose" : "field #0['TreeNumberList.TreeNumber']: [\"\", {}), [/^[A-Z]+$/, /^[A-Z]+$/]",
      				"yieldMovedCursor" : 0,
      				"dupsTested" : 56348,
      				"dupsDropped" : 28885,
      				"seenInvalidated" : 0,
      				"matchTested" : 0,
      				"keysExamined" : 56348,
      				"children" : [ ]
      			}
      		]
      	},
      	"ts" : ISODate("2015-02-25T19:14:18.433Z"),
      	"client" : "10.165.78.55",
      	"allUsers" : [ ],
      	"user" : ""
      }
      

      Collection stats:

      {
      	"ns" : "figure1.meshdescriptors",
      	"count" : 27465,
      	"size" : 355400384,
      	"avgObjSize" : 12940,
      	"storageSize" : 429027328,
      	"numExtents" : 15,
      	"nindexes" : 6,
      	"lastExtentSize" : 114012160,
      	"paddingFactor" : 1,
      	"systemFlags" : 1,
      	"userFlags" : 1,
      	"totalIndexSize" : 37789472,
      	"indexSizes" : {
      		"_id_" : 899360,
      		"ConceptList.Concept.TermList.Term.String_text" : 7031360,
      		"ConceptList.Concept.TermList.Term.String_1" : 13032544,
      		"ConceptList.Concept.TermList.Term.StringLower_1" : 12983488,
      		"TreeNumberList.TreeNumber_1" : 3066000,
      		"DescriptorUI_1" : 776720
      	},
      	"ok" : 1
      }
      

            Assignee:
            ramon.fernandez@mongodb.com Ramon Fernandez Marina
            Reporter:
            richardpenner Richard Penner
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated:
              Resolved: