将临时结果存储在单独的数据库表中

时间:2014-11-08 14:11:30

标签: php mysql performance caching

我想知道什么是缓解数据库昂贵查询的好方法。例如,使用大量记录,关节和计算的查询。

所以我认为我会每20分钟(或左右)执行一次这些昂贵的查询,并从一个存储这些昂贵查询结果的特殊表中为用户提供存储结果。这是一个很好的方法,还是你会选择一个平面文件缓存系统来存储数据库的结果?我读到普通的文件系统比较慢。

如果有人能在这个问题上给我启发,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您需要缓存数据,它只是在何处,也将基于数据集的大小。

Daryl所说的Memcache是​​一个非常好的解决方案。根据在后端访问此数据和框架的内容,它可以存储在基于应用程序的缓存中,该缓存每隔x分钟只发出一次查询,同时使用缓存结果。

如果你想要直接的sql路线,你会采用数据仓库的概念 您将创建一个用于报告而不是基于事务的处理的展平模式。 您将减少连接数并将数据非规范化到一定程度,以便查询更快......但它将是特定时期的陈旧数据。

您可以设置服务/计划任务/数据库计划任务以发出查询,清除现有的展平表格,并使用新结果重新填充它。