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

Concurrent index recalculation

    XMLWordPrintable

Details

    • New Feature
    • Status: Closed
    • Major - P3
    • Resolution: Won't Fix
    • 2.4.0-rc1
    • None
    • 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

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

            Dates

              Created:
              Updated:
              Resolved: