缓存-磁盘或数据库


Cache - disk or database?

在共享主机上哪个更好?

你认为把数据库查询结果缓存到磁盘上是个好主意吗?

这是一个非常糟糕的主意,除非查询非常昂贵(糟糕的数据库布局?)返回一个巨大的结果集。

  • 如果查询是昂贵的,但结果集很小:将其存储在内存中,例如在memcached中。
  • 如果查询很便宜:为什么要缓存它呢?但是如果你想这样做,内存是最好的选择。
数据库通常在内存中保存很多东西,因为与内存访问相比,磁盘访问非常慢。因此,使用磁盘缓存小的东西通常不会提高性能。

取决于目的。如果MemCache可用,我会把它们存储在里面。否则,我认为将它们存储在磁盘上是最好的选择。

但是通常根本不需要存储查询。通常他们会表现得很好。如果您有如此庞大和复杂的查询,那么最好切换到专用服务器。但在此之前,您可以通过创建正确的索引和优化您的查询来调整我们的数据库。

这是我的方法:

我缓存数据库查询的"磁盘"在一个php数组结构。然后强大的php操作码缓存来工作,给我的结果从内存而不是磁盘,因为他们被缓存。http://en.wikipedia.org/wiki/PHP_accelerator

为什么不使用存储过程和触发器从结果创建临时表呢?存储到磁盘有点不寻常。