用PHP缓存?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (65)

我们运行了许多用PHP编写的Web应用程序。不幸的是,在这些中存在一些选择性查询,其中一些非常重要的连接导致MySQL变得不那么敏感。

因此,我们正在研究缓存一些常用的连接。我已经研究过看起来很有希望的Zend_Cache,还有其他可能表现更好的替代方案吗?

还有什么是缓存的最佳后端?我相信Zend_Cache提供基于文件的,Sqlite和Memcached。

提问于
用户回答回答于

要解决这个问题,我会:

  1. 配置查询以检查错误(索引缺失,MySQL未正确设置)。
  2. 如果数据库服务器确实过载,则缓存输出(Zend_cache,Cache_lite,memecached等)。

对于(1):

  1. 学会理解:解释......
  2. 学会理解:显示状态

这样,您就会明白为什么查询速度很慢。

用户回答回答于

这实际上取决于导致这些查询变慢的原因,以及查询是否再次相同,或者每次查询是否不同。

一般来说,我最初会关注查询缓慢和改进的原因。数据库中使用的缓存是高效的,因为不同的查询可以使用相同的缓存条目(假设它们使用相同的数据)。

不要打扰MySQL查询缓存,更好地使用数据库服务器的ram来增加innodb缓冲池(假设你使用的是innodb)。查询缓存的主要困难是,当表中的一行被修改时,该表的每个条目都会被抛出 - 即使该特定查询的结果没有改变。

如果使用不正确,查询缓存可能会严重损害性能 - 但innodb缓冲池通常只是有益的。

如果您的数据不是太大,那么便宜且风险较低的解决方案就是购买大量ram的db服务器并增加innodb缓冲池以超过数据大小。

客户端缓存将更具可伸缩性(例如,如果每个Web服务器一个)但效率较低,并将陈旧数据暴露给应用程序(当数据变得陈旧时,它们可能不会自动过期)。

与任何性能事物一样,测试,测试测试。使用生产级硬件,类似生产的数据和工作负载。

扫码关注云+社区

领取腾讯云代金券