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
这个特定的查询目前在一天中插入大约2.6-2.8百万行,它处理得很好。在这些情况下,任务会每小时检查并执行一次。但我们也有每周一次和每月一次的插入。这是在这些场合插入的另一大块数据,当这些数据运行时,由于需要多长时间才能完成。
如果这些花费的时间太长,它会锁定其他任务,我计划将任务分解为更易于管理的块,以便将负载分散一点,并在需要全天/周/月时保持一切正常运行但是&# 39;不太理想。如果有人知道如何使这更有效率,那将是伟大的。这在大型ec2实例上运行。
答案 0 :(得分:0)
如果可以将数据一起批处理为导入文件,则可以使用MySQL LOAD DATA INFILE命令。它的速度和它一样快。
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
修改强>
您可能使用了错误的工具。如果您有特定任务要对大量数据执行,则通用数据库可能不是正确的工具。
例如,如果您要汇总日志数据,则可以使用多种直接执行文件I / O的编译语言在低功耗硬件上轻松处理100 GB /天。