APC是否比MySQL更好的缓存选项



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

APC容易得多,但除了更少的SQL和更干净的代码外,还值得转换我以前的缓存方法来切换到APC吗?

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

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

  • PHP scrip的操作码缓存
  • PHP用户数据的共享内存缓存

操作码缓存的工作原理是将编译后的PHP脚本存储在内存中。因此,当请求一个站点时,PHP解释器不必从磁盘读取文件并分析代码,而是可以直接执行它。

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

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

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

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

通常,APC会比MySQL快得多,所以花时间研究它并考虑从一个系统切换到另一个系统是非常值得的。而且,正如您所提到的,您将减少对数据库的SQL查询。

更多信息可以通过谷歌找到,我遇到了以下内容:

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

最新更新