【问题标题】:Is caching every database query healthy in laravel? [closed]在 laravel 中缓存每个数据库查询是否健康? [关闭]
【发布时间】:2015-03-09 05:50:44
【问题描述】:

我想做的是将每个数据库查询缓存到文件中。查询将被缓存,名称包括用户的用户名或用户 ID。当然,当用户更改其信息时,缓存文件将被替换为新的。甚至用户之间的友谊之类的交互也会被缓存。

如果我有 1.000.000 个用户,我将拥有数百万(可能数十亿)的文件。这对性能是好是坏?

【问题讨论】:

  • 您是否测量过数据库的性能并发现它很慢?您有 100 万用户和 10 亿个文件吗?
  • 我正在开发一个社交网络脚本。我不会有十亿个文件,但使用脚本的人可能有。我认为我必须考虑到每一个细节以提高性能。
  • 好的,但是一百万用户对于一台计算机来说并不是很多。如果您正确设置了数据库,那么它应该比您需要的要快。在不知道您的系统将如何反应的情况下优化内容甚至可能使其变慢。如果你真的想优化你的系统,那么你应该创建一百万个用户和文件,然后在负载下分析系统(例如使用 XDebug、KCacheGrind/WinCacheGrind 和ab)。
  • 我会从不缓存东西开始——当你在一两年内不需要缓存时添加缓存会增加复杂性而没有真正的好处。搜索“过早优化”——这本身就是一个大话题。
  • 感谢您的帮助。在我的系统中,当用户访问个人资料时,系统会检查他们是否是朋友。如果没有,它将检查请求是否已发送或已获取。还有其他一些小事。所有这些细节都需要额外的查询。我将开始构建一个包含所有这些内容的查询,但我需要一个非常复杂的查询。在我看来,缓存东西是一种简单的方法。

标签: php mysql performance caching laravel


【解决方案1】:

这将填写您的文件系统,因此取决于您拥有的空间量。此外,如果您有大量活动用户,这会降低基于文件查找的性能。

无论如何,我都建议使用 Memcache 或 APC 作为 laravel docs 说。

【讨论】:

  • 在这种情况下,我想问另一个问题。文件查找比 mysql 查询好还是坏?
  • 这完全取决于实际情况。数据库查询基本上是文件查找,因为您的数据最终存储在磁盘上(在大多数情况下)。当您有一个非常复杂的查询时(例如,数据库必须在返回正确的结果之前做很多工作),将其存储在一个文件中并从那里加载结果可能会更快。但我认为将一个简单的选择缓存到一个文件中并没有真正的好处,其中 id = 1 有一个结果。您应该真正测试这些情况,看看查询是否真的会通过缓存到文件中受益。
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多