自动/手动缓存的优点和缺点

时间:2010-05-19 10:33:15

标签: mysql performance memcached

我正在考虑是否要寻求完整的自动缓存或手动缓存。

我们的自动方法是一种解决方案,可以挖掘数据库,查询和格式化每个潜在的和未来的数据请求,并将其保存到适当的缓存存储(基于memcache或磁盘)。然后,数据不会失效,只会被自动缓存更新操作覆盖。

手动方法是让每个请求检查是否存在包含所请求数据的有效和存储的缓存版本,如果没有重新创建它并将其保存到适当的缓存存储中。

做什么常识?大家伙是怎么做到的?

非常感谢!

1 个答案:

答案 0 :(得分:1)

答案当然是:这取决于!如果您正在向数据的稀疏子集中获取大量查询,那么即时缓存可能比缓存所有内容更好。例如,如果您使用复杂查询查询酒店房价数据库,并且只有少数酒店经常点击,那么缓存每个酒店的每次搜索都没有意义。只需等待用户查询某些内容,然后缓存该结果。

另一方面,如果您拥有广泛访问的数据库集,则可能需要查看物化视图http://en.wikipedia.org/wiki/Materialized_view之类的内容。这基本上使数据库成为您的所有缓存,并将完整集的查询具体化为“缓存”表。