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

WT find performance is 1/2 that of MMv1 when using a multikey index

    XMLWordPrintableJSON

Details

    • Icon: Improvement Improvement
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None
    • Fully Compatible
    • Quint Iteration 5

    Description

      Reproducer:

      var tags = [ 'a','b','c','d'];
      db.test.ensureIndex( { tags : 1, string : 1} )
      for(x=0;x<1000000;x++){
      	var tg = [];
      	for(t=0;t<Math.floor(Math.random()*10);t++){tg.push(tags[x%4]+t)}
      	db.test.insert( { tags : tg, string : tags[x%4] })
      }
      db.test.find( { tags : "b0", string : "b" } ).explain(verbose="executionStats")
      

      When running the above code, the find will take twice as long under WT as it does on MMv1.

      Logs from WT

      2015-06-04T16:37:36.363+1000 I QUERY    [conn3] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:1934 reslen:1517 locks:{ Global: { acquireCount: { r: 3870 } }, Database: { acquireCount: { r: 1935 } }, Collection: { acquireCount: { r: 1935 } } } 603ms
      2015-06-04T16:37:36.893+1000 I QUERY    [conn3] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:1934 reslen:1517 locks:{ Global: { acquireCount: { r: 3870 } }, Database: { acquireCount: { r: 1935 } }, Collection: { acquireCount: { r: 1935 } } } 526ms
      2015-06-04T16:37:38.330+1000 I QUERY    [conn3] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:1934 reslen:1517 locks:{ Global: { acquireCount: { r: 3870 } }, Database: { acquireCount: { r: 1935 } }, Collection: { acquireCount: { r: 1935 } } } 490ms
      2015-06-04T16:37:39.602+1000 I QUERY    [conn3] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:1934 reslen:1517 locks:{ Global: { acquireCount: { r: 3870 } }, Database: { acquireCount: { r: 1935 } }, Collection: { acquireCount: { r: 1935 } } } 490ms
      2015-06-04T16:37:40.484+1000 I QUERY    [conn3] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:1934 reslen:1517 locks:{ Global: { acquireCount: { r: 3870 } }, Database: { acquireCount: { r: 1935 } }, Collection: { acquireCount: { r: 1935 } } } 493ms
      

      Logs from MMv1

      2015-06-04T16:38:53.158+1000 I QUERY    [conn1] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:2159 reslen:1517 locks:{ Global: { acquireCount: { r: 4320 } }, MMAPV1Journal: { acquireCount: { r: 2160 } }, Database: { acquireCount: { r: 2160 } }, Collection: { acquireCount: { R: 2160 } } } 536ms
      2015-06-04T16:38:53.542+1000 I QUERY    [conn1] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:2110 reslen:1517 locks:{ Global: { acquireCount: { r: 4222 } }, MMAPV1Journal: { acquireCount: { r: 2111 } }, Database: { acquireCount: { r: 2111 } }, Collection: { acquireCount: { R: 2111 } } } 287ms
      2015-06-04T16:38:54.520+1000 I QUERY    [conn1] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:2110 reslen:1517 locks:{ Global: { acquireCount: { r: 4222 } }, MMAPV1Journal: { acquireCount: { r: 2111 } }, Database: { acquireCount: { r: 2111 } }, Collection: { acquireCount: { R: 2111 } } } 289ms
      2015-06-04T16:38:55.278+1000 I QUERY    [conn1] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:2110 reslen:1517 locks:{ Global: { acquireCount: { r: 4222 } }, MMAPV1Journal: { acquireCount: { r: 2111 } }, Database: { acquireCount: { r: 2111 } }, Collection: { acquireCount: { R: 2111 } } } 295ms
      2015-06-04T16:38:56.008+1000 I QUERY    [conn1] query test.test query: { query: { tags: "b0", string: "b" }, $explain: true } ntoreturn:0 ntoskip:0 keyUpdates:0 writeConflicts:0 numYields:2110 reslen:1517 locks:{ Global: { acquireCount: { r: 4222 } }, MMAPV1Journal: { acquireCount: { r: 2111 } }, Database: { acquireCount: { r: 2111 } }, Collection: { acquireCount: { R: 2111 } } } 282ms
      

      Attachments

        Activity

          People

            david.hows David Hows
            david.hows David Hows
            Votes:
            0 Vote for this issue
            Watchers:
            17 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: