MySQL 插入缩放问题


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 百万行,它可以很好地处理。在这些情况下,任务每小时检查并执行一次。但我们也有每周和每月的插页。这是在这些情况下要插入的另一个非常大的数据块,当这些运行时,由于它们需要多长时间才能完成,我们会遇到问题。

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

如果可以将数据一起批处理到导入文件中,则可以使用 MySQL LOAD DATA INFILE 命令。它的速度和它将要得到的速度差不多。

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

编辑

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

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

最新更新