Laravel 5在大型数据库上失败了

时间:2015-05-21 19:28:13

标签: php mysql performance laravel laravel-5

我正在跟随simple ToDo list example学习Laravel 5。 我完全按照给定的方式设置代码,对于小型数据库,APP运行良好。

当我设置我的自定义种子(大型数据库)(下面附带的文件)时出现了问题。 当我将项目计数设置为 ~10-50时,APP完美地运行。 在 ~1000 +范围(1k项目,100k任务)中设置它,我必须多次单击(APP查询URL)才能使删除任务正常工作。标准方法deleteupdate失败,只有store有效。知道为什么吗?

我已经使用phpMyAdmin验证了数据库设置正确。我在删除时也设置了Exception检查。

编辑:我发现store操作即使在100k数据库上也能正常运行。如果我删除了一些我只是store d(使用PHP应用程序),它就可以了。但是,对于种子条目,delete失败(至少5次尝试)。

ProjectsTableSeeder.php

http://pastebin.com/HZrZNQgC

TasksTableSeeder.php

http://pastebin.com/uB03uTTa

TasksController.php

http://pastebin.com/xuACA29B

原始文件(来自教程)是here

2 个答案:

答案 0 :(得分:0)

我相信你试图一次显示太多记录。

尝试将此添加到索引方法中。

public function index(Project $project) {
    return view('tasks.index', compact('project'))->paginate(20);;
}

您可以使用。

在视图中显示它
{!! $project->appends(Request::except('page'))->render() !!}

我不相信还有更多的设置。

pagination上的文档非常好。

如果你还没有签出Laracasts那就值得每一分钱。

查看Crazy Simple Pagination了解有关分页的更多信息。

答案 1 :(得分:0)

我明白了。事实证明我错误地依靠Faker生成100k slugs,这就是问题所在。删除的多次点击实际上是不同的条目被删除(:P)。

我从:

更改了slug生成函数

'slug' => $faker->firstName

为:

'slug' => $faker->firstName.$faker->lastName.rand(0, $BATCH_SIZE)

现在它完美无缺!唷。 (我有1k项目,1M任务,几乎没有滞后!)