因为有一个业务设计到批量生成记录,一次性生成10w条内容(内容大部分相同,有的字段需要生成随机码),需要怎么处理?
1.假如生成的數據用鍊式結構保存,建議優化數據結構,如假如大部分數據相同可以用鍵值保存相同數據,跟住用子鍵值保存不同的數據(即求同存異)
如
array(0=>array('data'=>array('name'=>'t','age'=>'14),'key'=>array('1','2','3','4')));
foreach($array as $val) {
foreach($val['key']=>$kval) {
var_dump($kval);
var_dump($val);
}
}
2.一次性保存10條數據,對mysql服務器壓力加重,建議優化insert代碼,如
insert into table values('t','a',1),('t','a',2)
3.建議開啟事務,定量提交數據
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
那些说用异步,循环什么,个人觉得不合理.
10w条数据啊,你就算内存够大,数据存进数据库里也会占用很多时间(IO流),甚至如果事务提交没处理好数据库也会占用内存.
直接在数据库里直接生成数据才是最快的办法.
自己生成一张id表(只存id一个字段),记录10w条(0-10w)
mysql做法: