Php MySQL插入扩展问题

Php MySQL插入扩展问题,php,mysql,amazon-ec2,Php,Mysql,Amazon Ec2,这个特定的查询目前在一个典型的日子里插入了大约260-280万行,它处理得很好。在这些情况下,任务每小时检查并执行一次。但我们也有每周和每月的插页。这是在这些情况下要插入的另一个非常大的数据块,当这些运行时,由于需要多长时间才能完成,我们会遇到问题 当这些任务占用的时间太长时,它会锁定其他任务,我计划将这些任务分成更易于管理的块,以便更好地分散负载,并在需要的时候保持所有任务在一天/一周/一个月内运行,但这并不理想。如果有人知道我如何能使这更有效,那就太好了。这在大型ec2实例上运行。如果可以将

这个特定的查询目前在一个典型的日子里插入了大约260-280万行,它处理得很好。在这些情况下,任务每小时检查并执行一次。但我们也有每周和每月的插页。这是在这些情况下要插入的另一个非常大的数据块,当这些运行时,由于需要多长时间才能完成,我们会遇到问题


当这些任务占用的时间太长时,它会锁定其他任务,我计划将这些任务分成更易于管理的块,以便更好地分散负载,并在需要的时候保持所有任务在一天/一周/一个月内运行,但这并不理想。如果有人知道我如何能使这更有效,那就太好了。这在大型ec2实例上运行。

如果可以将数据一起批处理到导入文件中,则可以使用MySQL LOAD data INFILE命令。这是最快的速度了

编辑

您可能使用了错误的工具。如果要对大量数据执行特定任务,则通用数据库可能不是合适的工具


例如,如果要汇总日志数据,可以在低功耗硬件上轻松处理100 GB/天的数据,这些硬件可以使用多种编译语言中的任意一种直接执行文件I/O。

该表中是否有触发器?如果你的表很大,你可以考虑按日期或搜索引擎分区。由于您似乎正在运行搜索引擎数据的统计,所以现在可能是考虑转移到另一个数据库结构的好时机。“当这些任务花费的时间太长时,它会锁定其他任务”听起来像是在使用MyiSAM引擎,而MyiSAM引擎实际上会锁定表。。考虑切换到支持行的NYNDBlocking@RaymondNijland实际上已经在使用InnoDB行了。我的意思是它会锁定计划任务处理线程。目前它不是多线程的。因此,如果一项任务花费的时间超过一个小时,它就会把每小时的任务搞砸。它制作得很糟糕,所以我将修复这一问题,但我不确定将数据打包到一个文件中,只是为了将其拉出进行插入是否会更快。不过我会试试的,谢谢你。目前,它从一个大的select中的另一个表中提取一组特定的数据,然后再插入。您需要尝试一下,看看它在您的情况下表现如何,
INSERT INTO required_data (
keyword_id, search_engine_id, date, " . $periodType . "
) VALUES (
:keyword_id, :search_engine_id, :date, TRUE
) ON DUPLICATE KEY UPDATE " . $periodType . " = TRUE, received = FALSE