在Mongodb插入少量數據後插入變慢,我使用batch_insert插入。插入時,我還需要檢查一些條件。在PHP(Codeigniter)中插入Mongodb插入少量數據後插入緩慢
要插入20k數據本身需要1個多小時。
在temporary_table我有1L的數據
$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();
for ($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();
}
}
}
不知道時差的原因,但什麼ü可以嘗試進行調試,但開始刪除的選擇查詢,並嘗試簡單的批處理插入 –
我們正在使用batch_insert插入每次500個文件, @ MarcelDjaman – jhansi
只要刪除選擇查詢,看看你得到 –