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

Concurrent index recalculation

    XMLWordPrintable

    Details

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

      Description

      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.

        Attachments

          Activity

            People

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

              Dates

              Created:
              Updated:
              Resolved: