2017-09-26 55 views
-1

我有一个工作Perl脚本将插入,正确地检索从MySQL数据库中的数据时,我与我的系统,并在剧本没有问题做网上检索数据库中的数据。如何从多个perl脚本

我有数据库包含10000符合两个属性ID,网址数据。

我必须使用Perl打开数据库,并在我的机器上获取id和url的前10个数据集,而在另一个系统中,它应该接下来的10行数据,就像我必须同时为五台独立的机器一样。

反正有做这样或任何其他方法?

+0

我知道你是想不同的方案,以同一组数据的共同努力。那是对的吗? – simbabque

+0

是的,相同的脚本应该可以在不同的机器上工作,并从单个数据库检索数据。 – Sugumar

+0

在不同的机器上运行相同的程序并使它们全都使用相同的数据库没有问题。有趣的是让他们平行处理某些东西。这听起来像你想要集中你的数据处理。机器a将执行1到10行,机器B执行11到20行,等等。现在的问题是,他们如何知道要运行哪些?如果存在静态分配,则可以将参数用于程序。 – simbabque

回答

0

你可以用一个参数,告诉它,它是数字1,2,3,4或5。所以同一个脚本,只是调用,在每个5台主机的其他号码,创建自己的脚本。所以1号进程1-10,51-60,101-110等等,你明白了。只要没有(id,url)对被删除或插入,这将正常工作。追加是好的。如果你的脚本写日志文件,你总是可以看到完成了多少。你甚至可以在你的表格中添加一个“主机”和“状态”列,表示记录还没有处理,正在由哪个主机处理或已经完成。

如果您不能列添加到现有的表,你可以使用第二个表由ID引用的第一个表。

如果你想花哨和解决插入/删除问题(如果它适用于你),你可以更进一步,让你的主机检查下一个未处理的记录,锁定它,处理它,写状态“完成”,然后释放记录。

那么你甚至可以有动态主机加入了党和锁,工艺,发行记录只是因为他们有资源可用。

====================

不同的开始:一个主机控制器和销售您的10记录的数据包。所以每个主机上的相同脚本必须接受传输10个ID的参数。第二个脚本注意到,当一个主机完成了10条记录并给出了10条新记录。

快乐脚本。

TomTomTom

+0

对不起,延迟答复,通过你的方法我得到的解决方案,但如果我增加同时连接数量5至100。现在,当100 Connection连接到单个数据库时,我正在这样做,一旦工作完成,它将锁定表并将结果更新为数据库。现在问题是当我们锁定表时,剩余的连接在表解锁时等待的时间是否有任何与 – Sugumar

+0

类型相关的方法锁定整个表仅用于整个表操作。只需锁定要修改的密码(并在完成后解锁),以便其他记录可以自由同时修改。 – TomTomTom