【问题标题】:Handling large data with mysql用mysql处理大数据
【发布时间】:2014-10-28 07:58:53
【问题描述】:

我有大量数据需要从 mysql 中提取。大概会达到100,000+。我已经使用索引和其他东西对处理数据进行了优化。我现在面临的问题是内存溢出。每当我试图提取高于 100,000 的数据时,它就会显示内存大小错误。我已将内存限制设置为 512M,但可能会有大数据的机会,所以我不能每次都增加内存。有没有更好的方法来处理这个。我正在使用 cakephp,我需要一次为我的系统提供所有数据。

【问题讨论】:

  • 同时需要数据库之外的所有数据的要求似乎有缺陷。也许您可以将一些计算推送到数据库并检索一小部分数据。
  • 请定义:'从mysql中拉取'。
  • 也许这也有帮助:stackoverflow.com/questions/5865417/…
  • 只有在将整个数据库与某个远程客户端或冗余服务器同步时,才可能需要检索这么多记录,在这种情况下,您应该重新定义同步策略。

标签: php mysql cakephp


【解决方案1】:

你无法逃避内存有限的事实。时期。这个要求很愚蠢,但很好。您必须以适合可用内存的块的形式处理数据,并将这些块发送到客户端或将它们附加到您正在编写的文件中。

这基本上是 AJAX 分页或“无限加载”,只是您不更改页面,而是将下一页附加到 DOM 树中的上一页,直到您到达最后一页。当所有记录都已加载且 DOM 树中存在数百万个元素时,享受可能非常缓慢响应的网站,尽情享受吧。 ;)

另一种方法是在后台作业(shell、cron 任务)中创建视图,然后像静态页面一样将预生成的文件发送到客户端。 shell 还必须对数据进行分页并附加它以解决内存限制。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 2019-11-09
    • 2013-05-17
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多