我正在尝试使用脚本处理大量的dta记录,让我们将其命名为process.php,问题是我有一个庞大的数据集,以便更快完成工作,我想运行多个实例这个脚本与
/ usr / bin / php process.php start_record end_record&
所以我会让它们像
一样并行运行/ usr / bin / php process.php 0 10000&
/ usr / bin / php process.php 10000 20000&
/ usr / bin / php process.php 20000 30000&
/ usr / bin / php process.php 30000 40000&
...
我认为这样可以更快地完成工作,但是在尝试之后我没有发现它更快,相反,速度似乎非常接近线性方式(没有并发)。我不知道是不是因为process.php正在将记录插入到innodb表中或者是什么。
任何想法。
答案 0 :(得分:5)
如果您需要将行插入数据库,它将完全没有区别。这是数据库的瓶颈,而不是PHP脚本。您仍然只能一次插入一行,因此每个并发实例只需要彼此等待。
答案 1 :(得分:1)
并发运行对您没有帮助,因为插入本身就是瓶颈。
如果要基于同一查询将数据插入表中,可以进行一些优化。但一般来说,插入是昂贵的,如果你有一个大的数据集需要时间。
这些可能无济于事,但它们可能会有所帮助。