处理 1000 万个数据集 - php 和 sql [关闭]

Posted

技术标签:

【中文标题】处理 1000 万个数据集 - php 和 sql [关闭]【英文标题】:Processing 10 million datasets - php and sql [closed] 【发布时间】:2017-09-29 15:58:29 【问题描述】:

我们使用的是 php 7,并且在只有 128 MB RAM 的 Web 服务器上运行了一个 mysql 数据库。 我们在处理大量数据集时遇到了问题。 简单描述:我们有 40.000 种产品,我们想收集这些产品的数据以了解它们是否需要更新。从具有 1000 万个数据集的另一个表中收集特定数据的查询需要 1.2 秒,因为其中有一些 SUM 函数。我们需要单独对每个产品进行查询,因为与 SUM 相关的时间范围不同。由于大量查询,应该遍历所有产品的函数会返回超时(5 分钟后)——这就是我们决定实现一个 cronjob 的原因,它调用函数并且函数继续使用上次结束的产品.我们每 5 分钟调用一次 cronjob。 但是,对于我们的 40.000 种产品,我们需要大约 30 小时才能处理完所有产品。每个 cronjob,我们的函数处理大约 100 个产品...... 如何处理如此大量的数据 - 有没有办法将它与例如并行化? pthreads 还是有人有其他想法?服务器更新能否成为解决方案?

非常感谢! 纳丁

【问题讨论】:

“服务器更新可以成为解决方案吗?”显然,如果您的 RAM(可能还有 CPU)用完了,是的。 pthreads 会使用更多的 RAM 和 CPU。 【参考方案1】:

并行处理也需要资源,因此 128 MB 无济于事。

监控您的系统以查看瓶颈在哪里。很可能是内存,因为它太低了。一旦找到瓶颈资源,就必须增加它。再多的调整和修补都无法解决服务器过载的问题。

如果您可以看到它不是服务器资源问题(!),它可能是在查询级别(对于许多关节,需要一些索引,...)。还有你的 5 分钟。超时可以增加。

但是从服务器开始。

【讨论】:

以上是关于处理 1000 万个数据集 - php 和 sql [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP数据库结果集处理

使用 keras 的自定义数据生成器功能预处理海量数据

用于大型数据集的 Python defaultdict

PHP使用PDO进行事务处理

在云中跨大型 JSON 数据集运行类似 SQL 的查询?

需要 PHP 逐行处理的 CSV 需要很长时间(或超时)才能进入 SQL 数据库