資料庫資料同步,遷移等其他操作時,會涉及到資料的轉移,插入操作。如果是千萬級別的資料操作,那麼怎樣提高插入效率呢??可能有人會說,用load方法簡單高效。是的,但是如果是不同資料庫之間的同步插入該怎麼解決呢??也許你有很高明的辦法,也許你一無所措。這裡演示一種常規操作方法,僅供參考。
工具/原料
php開發執行環境;
資料庫系統;
大資料資源。
方法/步驟
優化SQL插入語句;
比如迴圈一條一條插入,改成連結多個值進行插入。
將:
foreach($re as $it){
$sql="insert into table (id,name) values(".$it['id'].","."$it['name'].")";
mysql_query($sql);
}
改為:
$sql="insert into table (id,name) values";
foreach($re as $it){
$str= "'".$it['id']."','".$it['name']."'";
}
$sql .= "(".$str."),";
$sql2 = substr($sql,0,-1);
mysql_query($sql);
開啟mysql的配置檔案,my.ini檔案,並找到:max_allowed_packet項;
將值修改大一點,具體根據自己需要修改。比如這裡修改為:1G。
重啟mysql服務;
如果執行頁面提示記憶體溢位,可將值設大一點。
Allowed memory size of 134217728 bytes exhausted (tried to allocate 132907287 bytes)
這樣,面對千萬資料匯入的時候,比原來那種方法至少快好多倍。