fork()的交错/分割插入循环

oogrdqng  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(193)

我有一个收集不同数据的页面,在本例中是名称、身高、体重等。我使用循环遍历行,然后将它们一行一行地插入到我的sql数据库中。每页有1000行,每页插入每行需要一段时间。我有兴趣尝试使用工人来更有效地分配任务,但我不确定我是否完全理解集群和分叉。有没有办法给4个工人每人大约250个插页?在我当前的设置中,显然所有的工作人员都执行相同的行,这将导致4000个插入,而不是1000个唯一的插入。
在我的圈子里

//Insert And Log
var sql = "INSERT INTO split.test (person_id,name,height,weight) VALUES (?,?,?,?)";
con.query(sql, [input_id,input_name,input_height_input_weight], function (err, rows, result) {
    if (err) throw err;
      console.log(input_id+" inserted");
    });

>> 1 Howard Jones 72 180
>> 2 John Smith 66 140
>> etc

我现在得到的

if (cluster.isMaster) {
  for (var p = 0; p < numCPUs; p++) {
    cluster.fork();

    //Insert And Log
    var sql = "INSERT INTO split.test (person_id,name,height,weight) VALUES (?,?,?,?)";
    con.query(sql, [input_id,input_name,input_height_input_weight], function (err, rows, result) {
        if (err) throw err;
          console.log(input_id+" inserted");
      });
}
} else {
  http.createServer(function(req, res) {
      res.writeHead(200);
      res.end('process ' + process.pid + ' says hello!');
  }).listen(8000);
}

>> 1 Howard Jones 72 180 [Worker 1]
>> 1 Howard Jones 72 180 [Worker 2]
>> 1 Howard Jones 72 180 [Worker 3]
>> 1 Howard Jones 72 180 [Worker 4]
>> 2 John Smith 66 140 [Worker 1]
>> 2 John Smith 66 140 [Worker 2]
>> 2 John Smith 66 140 [Worker 3]
>> 2 John Smith 66 140 [Worker 4]
>> etc

我想要什么

>> 1 Howard Jones 72 180 [Worker 1]
>> 2 John Smith 66 140 [Worker 2]
>> 3 Chris Christopher 69 220 [Worker 3]
>> 4 Matt Matthew 68 150 [Worker 4]
>> etc

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题