-
Type: New Feature
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: 2.4.0-rc1
-
Component/s: Concurrency, Index Maintenance
-
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
------
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.