在Symfony 4 / Doctrine 2中进行“手动”缓存是否值得?

时间:2018-08-28 07:53:18

标签: database doctrine-orm symfony4

我有这两个表

items

  • id
  • 名称

itemStats(与items表有多个关系)

  • id
  • item_id
  • update_time
  • stat_value

在大多数页面中,应用程序将仅以列表形式显示项目摘要,并且需要查询最新的update_time和最小/最大值stat_value

当前它的设置是在需要时仅执行完整查询,但是由于数据每天仅写入一次,并且每天可能读取数千次,是否值得将其缓存在items表中? (通过添加lastUpdateminStat', maxStat fields that would be updated after each INSERT in the itemStats`表)

还是Symfony或Doctrine在所有频繁查询中在后台进行足够的缓存以使其对我们自己的任何事情都无济于事?

1 个答案:

答案 0 :(得分:0)

Symfony和Doctrine都不应该/不能进行任何缓存,因为他们不知道何时数据可能已更改并且必须使缓存无效。

因此,如果您可以轻松地使它们保持最新状态,请添加其他字段。

或检查所选数据库的缓存选项,然后让DBMS完成所有工作:

SELECT 
  MAX(update_time) as lastUpdateTime,
  MIN(stat_value) as minStat,
  MAX(stat_value) as maxStat
FROM
  itemStats
GROUP BY
  item_id

MariaDB查询缓存https://mariadb.com/kb/en/library/query-cache/