在 Symfony 4/Doctrine 2 中做 "manual" 缓存值得吗?
Is it worth it to do "manual" caching in Symfony 4/Doctrine 2?
我有这两个table
items
- id
- 名字
itemStats
(多对一关系 items
table)
- id
- item_id
- update_time
- stat_value
在大多数页面中,应用程序只会以列表形式显示项目摘要,并且需要查询 stat_value
[=20 的最新 update_time
和 min/max 值=]
目前,它设置为每次需要时只执行完整查询,但由于数据每天只写入一次,每天可能读取数千次,因此值得将其缓存在 items
table? (通过添加 lastUpdate
、minStat',
maxStatfields that would be updated after each INSERT in the
itemStats` table)
或者 Symfony 或 Doctrine 是否在所有频繁查询的幕后做了足够的缓存,以使其对我们自己的任何操作都毫无用处?
Symfony 和 Doctrine should/could 都不做任何缓存,因为它们不知道数据何时可能已更改并且缓存必须失效。
因此,如果您可以轻松地使它们保持最新状态,请添加额外的字段。
或者检查所选数据库的缓存选项,让 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/
我有这两个table
items
- id
- 名字
itemStats
(多对一关系 items
table)
- id
- item_id
- update_time
- stat_value
在大多数页面中,应用程序只会以列表形式显示项目摘要,并且需要查询 stat_value
[=20 的最新 update_time
和 min/max 值=]
目前,它设置为每次需要时只执行完整查询,但由于数据每天只写入一次,每天可能读取数千次,因此值得将其缓存在 items
table? (通过添加 lastUpdate
、minStat',
maxStatfields that would be updated after each INSERT in the
itemStats` table)
或者 Symfony 或 Doctrine 是否在所有频繁查询的幕后做了足够的缓存,以使其对我们自己的任何操作都毫无用处?
Symfony 和 Doctrine should/could 都不做任何缓存,因为它们不知道数据何时可能已更改并且缓存必须失效。
因此,如果您可以轻松地使它们保持最新状态,请添加额外的字段。
或者检查所选数据库的缓存选项,让 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/