Laravel的雄辩模型默认设置为延迟加载。问题在于它对数据库进行了大量查询,特别是在高流量时,laravel应用程序崩溃了,而在Yii 1上构建的类似应用程序没有问题。
安装Laravel的调试栏后,问题是每次加载页面时都会进行太多查询。下一步是查询优化。我一直在使用Laravel文档中指示的急切加载,但仍然有太多查询。
我想知道是否有办法在开发环境中将Eloquent设置为“Eager Load”。这样,当页面无法加载时,识别问题会更容易。
答案 0 :(得分:43)
您可以将默认关系设置为" eager load"直接在模型上:
Class MyModel extends Model {
protected $with = ['relation'];
}
答案 1 :(得分:2)
高数据库负载的解决方案是Cache。
正确缓存可以在高流量时提供令人难以置信的性能,因为它可以将常见的数据库查询减少到零,并将它们重定向到RAM速度更快。
启用Route Caching也会提高性能:
php artisan route:cache
编辑:
作为Fx32点,你应该确保你需要Eloquent并且不会更好地直接向DB提出相同的查询,加入你需要的表并进行单个查询而不是很多:
缓存不是一个很好的解决方案,可以修复错误的数据库查询。 Eloquent很棒,但通常最好用它来编写适当的查询 一些加入。不要只是抨击你的数据库,然后扔掉所有的 导致缓存,因为它会引入新问题。如果你使用 case不是一个扁平的CRUD API,ActiveRecord模式可能不是 最好的解决方案。如果您仔细选择并加入结果 DB,并希望加快检索此类项目,缓存即可 帮助