数据库
我正在使用一个包含相当大表的数据库,这给我带来了问题。特别是有超过 120k 行。
我在用它做什么
我在 MakeAverage.php
文件中遍历此表,将它们合并到我数据库中新表中的大约 1k 行中。
什么不起作用
即使我尝试 DB::disableQueryLog()
或 take(1000)
限制,Laravel 也不允许我一次处理所有内容.即使启用了我的错误报告(有点像 this ),它每次都会返回一个空白页面。另外,我没有为此的 Laravel 日志文件。我不得不查看我的 php_error.log(我正在使用 MAMP)以意识到它实际上是一个 memory_limit 问题。
我做了什么
我在执行代码之前使用 ini_set('memory_limit', '512M')
增加了内存量。 (这是不好的做法,我应该在 php.ini 中这样做。)
发生了什么?
成功了!然而,Laravel 抛出了一个错误,因为由于数据量很大,页面在 30 秒后没有完成加载。
最佳答案
我会做什么
在这个问题上花了一些时间并查看了其他有类似问题的人(参见:Laravel forum、19453595、18775510 和 12443321),我认为也许 PHP 不是解决方案。
因为,我只是根据 Table A
的平均值创建一个 Table B
,我相信 SQL 将最适合我的需求,因为它是对于这种类型的操作(参见:6449072),我明显比 PHP 快,而且我可以使用诸如 SUM
、AVERAGE
、COUNT
和GROUP_BY
(Reference)。
关于mysql - 使用 Laravel 处理大型数据库的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19715126/