【问题标题】:How to handle large database in Laravel application faster?如何更快地处理 Laravel 应用程序中的大型数据库?
【发布时间】:2018-04-19 19:42:09
【问题描述】:

在 laravel 应用程序中更快地处理大型 mysql 数据库的最佳方法是什么。我有一张有大约 6,00,000 条记录的表。处理这些数据以优化和更快的方式选择或查询此表的最佳实践是什么。

【问题讨论】:

  • 这个问题很模糊。你能为此提供一个用例场景吗?
  • 我只是想知道我们可以在 laravel 中处理大型数据库的通用最佳实践。就像我们必须使用任何特定的包或遵循的任何步骤来处理大型数据库,使您的应用程序更快。
  • 如果你在你的列上设置了索引和正确的键(主要是你搜索的那个),它应该没问题。之后,不要在一次调用中加载所有行,它应该没问题。在某些情况下,您可以使用 Elasticsearch 之类的系统或使用 mysql 视图或非规范化(我更喜欢使用非规范化而不是视图)
  • 这真的不是那么大,但是你应该考虑预先加载,或者某种缓存,处理那么多记录不会损害网站的稳定性,但会损害性能,特别是如果你运行很多的查询。
  • 我有一个场景,我必须在我的主页上呈现 6 个图表 ( Highcharts ),其中每个图表是根据 2 个日期的给定时间段的不同场景达到 60 万条记录的综合表示。我看到页面加载时间超过 1 分钟。任何改进此性能的建议。

标签: mysql laravel laravel-5.2


【解决方案1】:

如果您尝试检索特定行或一组行。你不必担心。它会更快。但是如果你想从表中检索所有行并操作它的数据,最好使用chunk

Model::chunk(100, function ($chunked_results) {
   //do your work here
});

这将每次检索 100 行并将它们传递给回调函数。

如果你和他们有关系,最好将他们加载为

Model::with('relations')->chunk(100, function ($chunked_results) {
   //do your work here
});

chunk

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 2017-11-03
    • 1970-01-01
    • 2012-07-27
    • 2018-08-01
    • 1970-01-01
    • 2011-03-07
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多