【问题标题】:Is using memcache(d) premature optimization?是否使用 memcache(d) 过早优化?
【发布时间】:2012-01-17 07:07:41
【问题描述】:

我正在开发一个尚未上线的网络应用程序。 现在实施memcachememcached 是否为时过早?我应该仅在以下情况下使用它:

  • 网络应用程序已启动,并且
  • 由于高流量/负载导致数据库性能不佳?

还是在开发过程中实施更好?

另外,在哪些情况下不需要甚至不鼓励使用缓存接口?

【问题讨论】:

  • 其实没有。我的问题不是“什么是过早优化?”但是“在站点启动之前使用缓存接口是否被认为是过早的优化?”
  • 是的,我知道 - 因此是“精神上的” - 关键是除非您进行了分析和测试,否则您无法真正决定任何优化技术。

标签: php database caching optimization memcached


【解决方案1】:

了解您的问题空间

查看 memcached 自己的 wiki:

使用 memcached 会使我的应用程序变慢吗?

是的,当然。如果您的数据库查询都很快,那么您的网站就是 快,添加 memcached 可能不会使其更快。

首先让它工作

在您拥有稳定、可工作的产品之前进行的任何优化都为时过早。您将把所有时间都花在对应用程序性能影响为零的旋钮上。

最好的办法是让它进入工作状态,然后做几件事:

个人资料表现

在您收集性能数据之前,您不会知道真正的瓶颈在哪里。他们很可能在你没有考虑过的领域。

确定优化收益

评估每个问题区域,以获得潜在的性能改进。优先考虑能给您带来最佳投资回报率(投资回报率)的领域。在某些情况下,最好的 ROI 可能是更多的硬件

实施优化

确定需要优化的内容后,制定计划并实施。

来源

【讨论】:

  • 感谢您的回答。我也认为我担心的事情可能不会成为最大的问题,一旦我发布了这个页面,我会在我真的需要的时候处理它。
【解决方案2】:

完全不是,memcache 只是一个外部存储(快速且分布式),
不多也不少

另外,在哪些情况下不需要甚至不鼓励使用缓存接口?

可能不应该用于重要数据,例如交易

【讨论】:

    【解决方案3】:

    其实这个问题有两个答案:

    首先,正如 Will Bickford 所提到的,您必须避免过早优化。您必须有一个工作应用程序来确定可能从性能改进中受益的地方。只有在此之后,您才能尝试应用缓存。

    其次是为将来的负载设计您的应用程序。这意味着在开始编码之前,您应该尝试回答这个问题:“如果应用程序必须处理负载,比方说,比现在计划的负载高 10,000 倍,我的设计将如何改变?”这通常会导致更高级的(如直通式)设计,以适应扩展到多个服务器,随之而来的是需要在服务器之间共享状态,因此需要分布式缓存。如果你不回答这个问题,很有可能你迟早要重新编写你的应用程序。

    换句话说,为未来设计,为今天实施。

    希望这会有所帮助。

    斯拉瓦·伊梅舍夫

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 2012-01-20
      • 2012-01-13
      • 2010-12-08
      • 2011-05-15
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多