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

Concurrent index recalculation

    • Type: Icon: New Feature New Feature
    • Resolution: Won't Fix
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 2.4.0-rc1
    • Labels:
      None
    • Storage Execution

      Index1:
      ------
      op_date: 1,
      cust_id: 1,
      log.event_label: 1,
      log.event_result: 1


      Index2:
      ------
      import_id: 1
      gc_id: 1

      {unique: true}

      ------

      insert statement(php):
      $op = array(
      "event_label" => (integer) $data[2],
      "event_result" => (integer) $data[3]
      );
      $this->mongoDb->$coll->update(array("import_id" => $importId, "gc_id" => $data[0], "op_date" => $callDate), array('$push' => array('log' => $op)), array("upsert" => true, "w" => 0));

      Given this upsert statement, on an able server with several cores and high i/o, a bottlekneck is reached due to the recalculation of indexes. Running multiple of the same process will not increase performance as the single core is locked up for index recalculation.

      Is it possible to thread out index recalculation? In my case, I have 24 cores, over 1gb/s write speed and well over enough ram to fit my active set, but can't use the other cores for these upserts.

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            k. wolfe kyle wolfe
            Votes:
            2 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: