Стоит ли заниматься «ручным» кешированием в Symfony 4 / Doctrine 2? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть эти две таблицы

items

  • ID
  • имя

itemStats (отношение многие к одному items таблица)

  • ID
  • item_id
  • update_time
  • stat_value

На большинстве страниц приложение будет просто отображать сводку элементов в списках и будет запрашивать самые последние значения update_time и min / max stat_value

В настоящее время настроено просто выполнять полный запрос каждый раз, когда это необходимо, но поскольку данные записываются только один раз в день и читаются, может быть, тысячи раз в день, стоит ли их кэшировать в таблице items? (добавив lastUpdate, minStat', maxStat fields that would be updated after each INSERT in the таблица itemStats`)

Или Symfony или Doctrine выполняют достаточно кеширование за кулисами по всем частым запросам, чтобы сделать его бесполезным для любого из нас?

1 Ответ

0 голосов
/ 29 августа 2018

Ни Symfony, ни Doctrine не должны / не могли выполнять кэширование, поскольку они не могут знать, когда данные могли измениться, и кэш должен быть признан недействительным.

Поэтому добавьте дополнительные поля, если вы можете легко их обновлять.

Или проверьте параметры кэширования в выбранной вами базе данных и позвольте СУБД выполнить всю работу:

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/

...