APC比MySQL更好的缓存选项吗?

时间:2012-12-15 10:40:11

标签: php apc

每当我需要缓存一些信息时,我依赖于时间戳和MySQL,将数据存储到数据库中并以这种方式获取数据。我刚看过APC。

APC是如此简单,但除了更少的SQL经过和更清晰的代码之外,是否值得将我之前的缓存方法转换为APC?

3 个答案:

答案 0 :(得分:1)

通常,APC将比MySQL快得多,因此值得花时间研究它并考虑从一个系统切换到另一个系统。而且,正如您所提到的,您将向数据库发送更少的SQL查询。

可以通过Google找到更多信息,我发现了以下内容:

http://www.mysqlperformanceblog.com/2006/08/09/cache-performance-comparison/

答案 1 :(得分:1)

从字面上回答这个问题,是的。 Mysql不是缓存,APC是,因此更好。

Mysql是一个存储选项,用于在其上实现缓存,但是您正在使用您提到的时间戳以及您使用它们执行的任何逻辑来实现缓存。 APC是数据和代码的完整缓存实现。

性能方面,访问本地APC缓存总是比访问mysql数据库快得多。关键字有本地,APC没有分发(据我所知),所以如果你想共享你的缓存,你需要一个外部缓存系统,比如memcached。

答案 2 :(得分:1)

如果您已经运行了数据库并完成了大部分工作,那么提高性能的第一步就是逐步调整数据库。正确配置的MySQL速度非常快。 显然在某个时间点它不再快速,需要进一步缓存。在缓存需要考虑的一件事时,您的数据可能不再一致。这意味着您可能会更新主存储(数据库)中的数据,但其他人会读取过时的缓存条目

现在你已经将APC作为一种可能的解决方案:APC是两个相关但不同的东西:

  • PHP脚本的操作码缓存
  • PHP用户数据的共享memorz缓存

操作码缓存的工作原理是将已编译的PHP脚本存储在内存中。因此,在请求站点时,PHP解释器不必从磁盘读取文件并分析代码,但可以直接执行它。这给了一个很大的推动,并且总是一件好事。

共享内存缓存接受任何PHP变量(好吧,有一些例外......)并将其存储在系统的共享内存中,因此同一台机器上的所有PHP进程都可以读取它。因此,如果将数据库查询的结果存储在APC中,则可以节省时间,因为与查询数据库(将查询发送到其他计算机,解析,执行,发回结果)相比,访问共享内存的速度非常快... )但正如开头所说,你必须要记住,数据可能已经过时了。并且还要注意所有数据都存储在内存中。因此,根据可用RAM的数量,可以存储的内容存在限制。另一个很大的缺点是数据只存储在内存中。这意味着当系统停机时,缓存将为空,其中的所有内容都将丢失。