In PHP(Codeigniter) After inserting few data in Mongodb insertion is getting slow -


in mongodb after inserting few data insertion getting slow, using batch_insert insertion. while inserting need check conditions also.

to insert 20k data takes more 1 hour.

in temporary_table having 1l data

$batchsize = 20; $documents = array(); $count = count($pending_contacts_data); $count =1; $temporary_data = array();  for($i=0;$i<$count;$i++){    $multiple_temporary_data = $this->mongo_db->select('*')->where(array('contact_id'=>(int)4,'status'=>1))->limit(10000)->get('temporary_table');   $temporary_data = array_merge($temporary_data,$multiple_temporary_data); }  $count1 = count($temporary_data); $documents = array(); ($i=0; $i<$count1; $i++) {    $obj_id[] = $temporary_data[$i]->_id;   $test_email = $this->mongo_db->select('*')->where(array('encrypted_email'=>$temporary_data[$i]->encrypted_email))->get('email_table');    if(empty($test_email)){     $document = array('email_id'=>$temporary_data[$i]->email,                       'encrypted_email'=>$temporary_data[$i]->encrypted_email,                       'encrypted_key'=>$temporary_data[$i]->encrypted_key,                       'encrypted_iv'=>$temporary_data[$i]->encrypted_iv,                       'status'=>(int)1,                       'opend_supression_status'=>''                      );       array_push($documents, $document);      if ((($i % $batchsize) === 0)) {            $insert = $this->mongo_db->batch_insert('opend_contacts_email_new1',$documents);           $update_temporary  =$this->mongo_db->where_in('_id',$obj_id)->set(array('status'=>13))->update_all('temporary_data');           $documents = array();     }   } } 

what went wrong code after 500th element each new item acted single batch insert. , $documents array of 1 element rest of loop. u should have used modulus operator %

$count = 20000; $batchsize = 50;  ($i=1; $i<=$count; ++$i){    $test_email = $this->mongo_db->select('*')->where(array('email_id'=>$temporary_data[$i]->email_id))->get('email_table');    if(empty($test_email)){     $document = array('email_id'=>$temporary_data[$i]->email,                           'encrypted_email'=>$temporary_data[$i]->encrypted_email,                           'encrypted_key'=>$temporary_data[$i]->encrypted_key,                           'encrypted_iv'=>$temporary_data[$i]->encrypted_iv,                           'status'=>(int)1,                           'suppression_status'=>''     );     array_push($documents, $document);      if (($i % $batchsize) === 0) {                    $insert = $this->mongo_db->batch_insert('email_table',$documents);           $documents = array();     }   } } 

Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -